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

我要做的报表模板要求是传入一个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. SCALA STEP BY STEP

    http://www.artima.com/scalazine/articles/steps.html http://hongjiang.info/scala/

  2. iOS10访问用户权限的描述key值汇总

    https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Ar ...

  3. HTML+CSS Day10实例

    1.家居大视野 效果图: 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

  4. UVALive - 4670 Dominating Patterns AC 自动机

    input n 1<=n<=150 word1 word2 ... wordn 1<=len(wirdi)<=70 s 1<=len(s)<=1000000 out ...

  5. jquery操作HTML5 的data-*的用法实例分享

    .mm{width:256px; height:200px;} .mm[data-name='张含韵']{background:url(http://image.zhangxinxu.com/imag ...

  6. hdu_4824_Disk Schedule(dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4824 题意:中文,不解释 题解:双调欧几里德旅行商问题,具体可看dp双调欧几里德旅行商,这里注意的是起 ...

  7. 初识mongo

    进入mongo /usr/local/mongodb/bin/mongo --host 查看所有db show dbs 查看当前进入的db db 查看当前db的所有collection show co ...

  8. 开始制作国产的 scratch

    首先分析下API和数据格式: https://api.scratch.mit.edu/proxy/featured  GET   23.235.37.162:443 返回数据与对应栏目: commun ...

  9. 有indexPath获取到cell对象

    //SHSecretaryTipsCell *cell=(SHSecretaryTipsCell *)[tableView cellForRowAtIndexPath:indexPath];

  10. isr

    Kafaka动态维护了一个同步状态的副本的集合(a set of in-sync replicas),简称ISR