这样做并不是我想出来的,是之前做一个报表模板时搜的,原地址忘了

我要做的报表模板要求是传入一个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 动态绑定数据 数据列动态的更多相关文章

  1. Oracle笔记(七) 数据更新、事务处理、数据伪列

    一.数据的更新操作 DML操作语法之中,除了查询之外还有数据的库的更新操作,数据的更新操作主要指的是:增加.修改.删除数据,但是考虑到emp表以后还要继续使用,所以下面先将emp表复制一份,输入如下指 ...

  2. yii2 数据导出 excel导出以及导出数据时列超过26列时解决办法

    作者:白狼 出处:http://www.manks.top/article/yii2_excel_extension​ 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...

  3. DB2存储过程实现查询表数据,生成动态SQL,并执行

    一.动态执行SQL PREPARE S1 FROM 'delete from test'; EXECUTE S1; 二.使用游标 DECLARE V_CURSOR CURSOR FOR SELECT ...

  4. c#保存datagridview中的数据时报错 “动态SQL生成失败。找不到关键信息”

    ilovejinglei 原文 C#中保存datagridview中的数据时报错"动态SQL生成失败.找不到关键信息" 问题描述     相关代码 using System; us ...

  5. Java将数据按列写入Excel并设置格式(字体、背景色、自动列宽、对齐方式等)

    本文使用jxl.jar工具类库将数据按列写入Excel并设置格式(字体.背景色.自动列宽.对齐方式等). /** * 按列写入Excel并设置格式 * * @param outputUrl * 输出路 ...

  6. 图解Redis之数据结构篇——简单动态字符串SDS

    图解Redis之数据结构篇--简单动态字符串SDS 前言     相信用过Redis的人都知道,Redis提供了一个逻辑上的对象系统构建了一个键值对数据库以供客户端用户使用.这个对象系统包括字符串对象 ...

  7. 雷林鹏分享:jQuery EasyUI 数据网格 - 列运算

    jQuery EasyUI 数据网格 - 列运算 在本教程中,您将学习如何在可编辑的数据网格(datagrid)中包含一个运算的列.一个运算列通常包含一些从一个或多个其他列运算的值. 首先,创建一个可 ...

  8. mysql load数据第一列丢失

    mysql load数据第一列丢失 问题描述 MySQL表的结构如下: mysql> desc cms_msg_test_3; +----------------+--------------- ...

  9. Oracle的数据伪列(ROWNUM)

    作者:Vashon 时间:20150414 数据库:Oracle11g 数据伪列(ROWNUM) *范例:查询前5条记录:select rownum,empno,job,hiredate,sal fr ...

  10. 循序渐进VUE+Element 前端应用开发(27)--- 数据表的动态表单设计和数据存储

    在我们一些系统里面,有时候会需要一些让用户自定义的数据信息,一般这些可以使用扩展JSON进行存储,不过每个业务表的显示项目可能不一样,因此需要根据不同的表单进行设计,然后进行对应的数据存储.本篇随笔结 ...

随机推荐

  1. 网页 CSS样式表

    昨天,我主要是对CSS样式表进行了一下复习. CSS样式表主要有三类:内联样式表.内嵌样式表.外部样式表,我们平时一般使用第二种样式表. 选择器主要包括:标签选择器.class选择器.ID选择器.复合 ...

  2. struts2 result type的类型

    一共十种类型 1.dispatcher 默认的类型,相当于servlet的foward,服务器端跳转.客户端看到的是struts2中配置的地址,而不是真正页面的地址.一般用于跳转到jsp页面 2.re ...

  3. 微信账号 echo_server 的实现

    <?php/** 微信账号 echo_server 的实现*//** 定义 echo_server 的 TOKEN 为 echo_server*/define("TOKEN" ...

  4. CSS的标签类型

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. C语言语法tips(不断更新)

    语法虽然琐碎,犯了低级错误代价可就大了,列出一些容易混淆概念,避免以后出错 sizeof和strlen的区别在于:1.sizeof是运算符,语言支持的,strlen可以求malloc出来的字符串的长度 ...

  6. CSS BFC(Block Formatting Context)

    BFC是 W3C CSS 2.1 规范中的一个概念Block Formatting Context的缩写即格式化上下文,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用.简单讲,它是提 ...

  7. linux的pvtrace环境配置

    1.查看当前ubuntu版本号 froid@ubuntu:~/Desktop$ lsb_release -aNo LSB modules are available.Distributor ID:   ...

  8. 如何将excel导入到数据库中并在gridview中显示

    在页面上导入个excel文件,将该excel中的数据导入到数据库中,并且在页面的gridview中把数据显示出来. .在Asp.net中怎样将Excel文件中的数据导入到GridView中呢? 首先我 ...

  9. 第三十一节,time时间模块

    模块简介 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...

  10. shell脚本中$

    变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid ./package/kernel/mac80211 ...