xtraReprot 动态绑定数据 数据列动态
这样做并不是我想出来的,是之前做一个报表模板时搜的,原地址忘了
我要做的报表模板要求是传入一个DataTble,不管datatable的列数多少,计算列宽后显示报表
这是我的报表:
灰色那个XRtable是显示列标题的,下面那个是显示绑定数据的
下面是报表页面代码:
namespace OlenoUI.Report
{
public partial class XtraReport1 :DevExpress.XtraReports.UI.XtraReport
{
public XtraReport1()
{
InitializeComponent();
} public XtraReport1(DataTable ds)//构造函数重载
{
InitializeComponent();
DataTable dt = ds.Clone();
foreach (DataRow dr in ds.Rows)
dt.ImportRow(dr);
SetDataBind(dt);
}
private void SetDataBind(DataTable table)//绑定数据源
{
if (table==null||table.Columns.Count < 1) return;
if (table.Columns[0].ColumnName == "id")
{
table.Columns.Remove("id");
}
string lastColName=table.Columns[table.Columns.Count - 1].ColumnName;
if (lastColName == "初盘"||lastColName=="复盘")
{
table.Columns.Remove(table.Columns[table.Columns.Count - 1].ColumnName);
table.Columns.Add(lastColName);
foreach (DataRow row in table.Rows)
{
row[table.Columns[lastColName].ColumnName] = "囗";
}
}
DataSource = table; ///
int colWidth = this.PageWidth-this.Margins.Left-this.Margins.Right;
this.taday.Text = DateTime.Today.ToString("yyyy-MM-dd"); colWidth = colWidth / table.Columns.Count;
try
{
foreach (DataColumn dc in table.Columns)
{
XRTableCell[] colomnTittle = xrTable2.InsertColumnToLeft(xrTableCell2);
colomnTittle[0].Text = dc.ColumnName;
colomnTittle[0].Width = colWidth; XRTableCell[] columnsDetail = xrTable1.InsertColumnToLeft(xrTableCell1);
columnsDetail[0].Text = dc.ColumnName;
columnsDetail[0].Width = colWidth;
//绑定数据 参数含义分别为:绑定对应的属性名称(绑定columnsDetail[0]的Text属性),数据源,绑定对应的数据列
//还有 XRLabel也可以这样绑定数据哦
columnsDetail[0].DataBindings.Add("Text", DataSource, dc.ColumnName);
} this.count.Text+= CheckMain.Count;
this.checkMen.Text += CheckMain.CheckMen;
this.tittle.Text = CheckMain.Tittle;
xrTable2.DeleteColumn(xrTableCell2);
xrTable1.DeleteColumn(xrTableCell1);
}
catch { } } }
}
以上报表只有传递一个DataTable就可以调用了
XtraReport1 reprot=new XtraReport1(dt); dt是以查询出结果的DataTable
实现效果:
各位别吐槽,界面设计没花大工夫
横向打印:this.Landscape = true; //
定义纸张:this.PaperKind = System.Drawing.Printing.PaperKind.A4Plus; //设置纸张
然后遇到超复杂动态表头报表时我是通过拼接XRTable方式拼命计算位置组成的,
不知大神们有何见解,请赐教!
xtraReprot 动态绑定数据 数据列动态的更多相关文章
- Oracle笔记(七) 数据更新、事务处理、数据伪列
		
一.数据的更新操作 DML操作语法之中,除了查询之外还有数据的库的更新操作,数据的更新操作主要指的是:增加.修改.删除数据,但是考虑到emp表以后还要继续使用,所以下面先将emp表复制一份,输入如下指 ...
 - yii2 数据导出 excel导出以及导出数据时列超过26列时解决办法
		
作者:白狼 出处:http://www.manks.top/article/yii2_excel_extension 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...
 - DB2存储过程实现查询表数据,生成动态SQL,并执行
		
一.动态执行SQL PREPARE S1 FROM 'delete from test'; EXECUTE S1; 二.使用游标 DECLARE V_CURSOR CURSOR FOR SELECT ...
 - c#保存datagridview中的数据时报错 “动态SQL生成失败。找不到关键信息”
		
ilovejinglei 原文 C#中保存datagridview中的数据时报错"动态SQL生成失败.找不到关键信息" 问题描述 相关代码 using System; us ...
 - Java将数据按列写入Excel并设置格式(字体、背景色、自动列宽、对齐方式等)
		
本文使用jxl.jar工具类库将数据按列写入Excel并设置格式(字体.背景色.自动列宽.对齐方式等). /** * 按列写入Excel并设置格式 * * @param outputUrl * 输出路 ...
 - 图解Redis之数据结构篇——简单动态字符串SDS
		
图解Redis之数据结构篇--简单动态字符串SDS 前言 相信用过Redis的人都知道,Redis提供了一个逻辑上的对象系统构建了一个键值对数据库以供客户端用户使用.这个对象系统包括字符串对象 ...
 - 雷林鹏分享:jQuery EasyUI 数据网格 - 列运算
		
jQuery EasyUI 数据网格 - 列运算 在本教程中,您将学习如何在可编辑的数据网格(datagrid)中包含一个运算的列.一个运算列通常包含一些从一个或多个其他列运算的值. 首先,创建一个可 ...
 - mysql load数据第一列丢失
		
mysql load数据第一列丢失 问题描述 MySQL表的结构如下: mysql> desc cms_msg_test_3; +----------------+--------------- ...
 - Oracle的数据伪列(ROWNUM)
		
作者:Vashon 时间:20150414 数据库:Oracle11g 数据伪列(ROWNUM) *范例:查询前5条记录:select rownum,empno,job,hiredate,sal fr ...
 - 循序渐进VUE+Element 前端应用开发(27)--- 数据表的动态表单设计和数据存储
		
在我们一些系统里面,有时候会需要一些让用户自定义的数据信息,一般这些可以使用扩展JSON进行存储,不过每个业务表的显示项目可能不一样,因此需要根据不同的表单进行设计,然后进行对应的数据存储.本篇随笔结 ...
 
随机推荐
- 借助nginx搭建反向代理服务器小例
			
1 反向代理: 反向代理(Reverse Proxy)方式是指以代理服务器接收internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接 ...
 - 将数据动态加载到Echarts饼图中
			
需求描述 Echarts中的官方示例是将数据的设定写好在页面的配置项中的,但在实际的开发展示中,我们需要按照需求通过调用后台的接口获取数据,再将数据加载到特定的Echarts饼图中. 实现效果 实现步 ...
 - 项目管理实践【五】自动编译和发布网站【Using Visual Studio with Source Control System to build and publish website automatically】
			
在上一篇教程项目管理实践[三]每日构建[Daily Build Using CruiseControl.NET and MSBuild] 中,我们讲解了如何使用CCNET+MSBuild来自动编译项目 ...
 - 解决ie阴影的兼容性
			
box-shadow:0px 0px 10px #aba25b; -webkit-box-shadow:0px 0px 10px #aba25b; -moz-box-shadow:0px 0px 10 ...
 - 设计模式--静态工厂设计模式在android中的使用
			
今天看到这篇文章:http://www.androiddesignpatterns.com/2012/05/using-newinstance-to-instantiate.html public c ...
 - Android自动测试之Monkey工具
			
Monkey工具 前言: 最 近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey. Monkeyrunner. ...
 - VirtualBox 不能为虚拟电脑打开一个新的任务 可能的解决方案
			
1. 在虚拟机上右键,清除保存状态 2.Cannot load R0 module C:\Program Files\Oracle\VirtualBox/VBoxDD2R0.r0: SUPR3Load ...
 - SCANF SCANF_S
			
今天在看C的教程的时候,用VS2013写了一小段代码 scanf("%f",&w); 提示需要在预编译器里添加 _CRT_SECURE_NO_WARNINGS, 百度了下 ...
 - LINUX修改IP地址
			
以前都是使用自动IP动态分配获取IP的,虽然每次获得的ip都是相同的,但我还是决定自己设置一个IP.输入命令:[root@localhost ~]# ifconfig eth0 219.246.177 ...
 - Chapter 2 Open Book——19
			
He bent over and began scraping together a pile of the white mush. 他弯下腰,开始团起一个白色的雪球. "I'll see ...