您的位置:首页 > 其它

XtraReports 动态报表的建立

2010-09-21 09:05 134 查看
思路:简单的报表显示最基本的无非就是数据列信息和数据源,所以在XtraReports构造函数中传入:一个要显示的数据列的信息(此例中我用字符串表示),一个数据源(此例中我传入数据表)。有了这两个基本信息就足够建立一个报表了,当然是简单点的,其他的参数可以自己添加或删减。以下是我写的构造函数代码,没有经过优化和整理的,仅供参考和学习讨论。
/// <summary>
/// 构造函数-动态建列
/// </summary>
/// <param name="BaoBiaoN">报表名称</param>
/// <param name="LieShu_LT">数据列数量</param>
/// <param name="LieStr_LT">数据列明细</param>
/// <param name="MyTable_MX">数据表</param>
public XReport(string BaoBiaoN,int LieShu_LT,string LieStr_LT,DataTable MyTable_MX)
{
InitializeComponent();

dataSet_SJ.Tables.Add(MyTable_MX);

this.DataSource = this.dataSet_SJ;

this.xLabel_Name.Text = BaoBiaoN;
this.xLabel_Date.Text = "打印时间:"+System.DateTime.Now;
this.xLabel_CZY.Text = "操作员:"+QuanJuHanShu.UersN;

string LieStr_bak=LieStr_LT;
string LS_Lie;
string LS_Lie_MX;

XRTableCell MyTableCell_LT;
XRTableRow MyTableRow_LT=new XRTableRow();
XRTable MyTable_LT = new XRTable(); ;
for (int a = 0; a < LieShu_LT; a++)
{
if (LieStr_LT.Contains("$"))
LS_Lie = LieStr_LT.Substring(0, LieStr_LT.IndexOf("$"));
else
LS_Lie = LieStr_LT;

if (LS_Lie.Contains(","))
LS_Lie_MX = LS_Lie.Substring(LS_Lie.IndexOf(",") + 1, LS_Lie.LastIndexOf(",") - LS_Lie.IndexOf(",") - 1);
else
LS_Lie_MX = LS_Lie;

MyTableCell_LT = new XRTableCell();

MyTableCell_LT.Name = LS_Lie_MX + "_LT";
MyTableCell_LT.Text = LS_Lie_MX;
MyTableCell_LT.Borders = ((BorderSide)(BorderSide.All));
MyTableCell_LT.TextAlignment = TextAlignment.MiddleCenter;
MyTableCell_LT.BackColor = Color.LemonChiffon;

MyTableRow_LT.Cells.Add(MyTableCell_LT);

LieStr_LT = LieStr_LT.Substring(LieStr_LT.IndexOf("$") + 1);
}

MyTable_LT.Size = new System.Drawing.Size(650, 28);
MyTable_LT.Rows.AddRange(new XRTableRow[] {MyTableRow_LT});

this.PageHeader.Controls.AddRange(new XRControl[] {MyTable_LT});

XRBinding MyBinding_MX;
MyTable_LT = new XRTable();
MyTableRow_LT = new XRTableRow();
for (int b = 0; b < LieShu_LT; b++)
{
MyTableCell_LT=new XRTableCell();
if (LieStr_bak.Contains("$"))
LS_Lie = LieStr_bak.Substring(0, LieStr_bak.IndexOf("$"));
else
LS_Lie = LieStr_bak;

LS_Lie_MX = LS_Lie.Substring(0,LieStr_bak.IndexOf(","));

MyTableCell_LT.Name = LS_Lie_MX;
MyTableCell_LT.Borders = ((BorderSide)(BorderSide.All));
MyTableCell_LT.TextAlignment = TextAlignment.MiddleCenter;
MyBinding_MX = new XRBinding();

MyBinding_MX = new XRBinding("Text", this.dataSet_SJ, dataSet_SJ.Tables["MyTab_gridView_MX"].Columns[b].ColumnName, "");
MyTableCell_LT.DataBindings.Add(MyBinding_MX);

MyTableRow_LT.Cells.Add(MyTableCell_LT);

LieStr_bak = LieStr_bak.Substring(LieStr_bak.IndexOf("$")+1);
}

MyTable_LT.Size = new Size(650,28);
MyTable_LT.Rows.AddRange(new XRTableRow[] { MyTableRow_LT});

this.Detail.Controls.AddRange(new XRControl[] {MyTable_LT});

}


注意:在字段绑定数据源时,一定要用列名(string),不要使用索引形式,只有直接用列名数据才可以正常显示。

PS:如果你在一个博客名叫笨蛋EGG的163博客看到这篇文章,请不要怀疑,这篇是在163博客首发的,现在搬家转过这里来了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: