java table 数据绑定_DevExpress Report-XRTable绑定数据

将从跳转前的页面(A)中获取传入的数据(dtOrd、BatchID、ModelID),绑定到Report报表对应的控件 ,代码如下:

this.xrtBatchID.Text = sBatchID;

this.xrtModel.Text = sModelID;

this.xrtDateTime.Text = DateTime.Now.ToShortDateString().ToString(); // 20018-9-4

if (dtOrd.Rows.Count > 0)

{

XRTable table = new XRTable();

for (int i = 0; i < dtOrd.Rows.Count; i++)

{

if (list[i]!=null) {

XRTableRow row = new XRTableRow();

XRTableCell TESTING_ITEM = new XRTableCell();

XRTableCell TESTING_RESULT = new XRTableCell();

XRTableCell TESTING_SPECIFICATION = new XRTableCell();

XRTableCell DIMENS = new XRTableCell();

XRTableCell TESTING_METHOD = new XRTableCell();

row.Cells.Add(TESTING_ITEM);

row.Cells.Add(TESTING_RESULT);

row.Cells.Add(TESTING_SPECIFICATION);

row.Cells.Add(DIMENS);

row.Cells.Add(TESTING_METHOD);

//TESTING_ITEM.WidthF = 140.14f;

//TESTING_RESULT.WidthF = 140.14f;

//TESTING_SPECIFICATION.WidthF = 140.14f;

//DIMENS.WidthF = 140.14f;

//TESTING_METHOD.WidthF = 140.14f;

TESTING_ITEM.DataBindings.Add("Text", dtOrd, "TESTING_ITEM");

TESTING_RESULT.DataBindings.Add("Text",dtOrd, "TESTING_RESULT");

TESTING_SPECIFICATION.DataBindings.Add("Text", dtOrd, "TESTING_SPECIFICATION");

DIMENS.DataBindings.Add("Text", dtOrd, "DIMENS");

TESTING_METHOD.DataBindings.Add("Text", dtOrd, "TESTING_METHOD");

xrTable7.Rows.Add(row);

}

}

DetailBand detailBand = new DetailBand();

detailBand.Controls.Add(table);

report.Bands.Add(detailBand);

}

但是这样绑定的结果是(传入数据有两行数据,但绑定显示的都是第一行的内容):

5c7f1936a18135eb8bec5dbcc5a0de01.png

于是,将上述代码改进,把传入的Table的多行数据拆分成多个表,分别进行绑定(相信有更简单的,可以直接一次性绑定全部数据的方法,如果有大神看到,请指教一下,多谢),代码如下:

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using DevExpress.XtraReports.UI;

using System.Data;

using TRSCore;

using System.Text;

using MESCore;

using DevExpress.DataAccess.EntityFramework;

using System.Collections.Generic;

namespace QCMCore.Reports

{

public partial class rptQCMCOACard : DevExpress.XtraReports.UI.XtraReport

{

public rptQCMCOACard()

{

InitializeComponent();

}

public rptQCMCOACard(DataTable dt,string sBatchID,string sModelID)

{

InitializeComponent();

this.dtOrd = dt;

this.sBatchID = sBatchID;

this.sModelID = sModelID;

}

DataTable dtOrd = null;

string sBatchID = "";

string sModelID = "";

private bool FillHeader()

{

try

{

if (dtOrd == null)

{

CommonFunction.ShowMsgBox("请先选择需要打印的ITEM!");

return false;

}

this.xrtBatchID.Text = sBatchID;

this.xrtModel.Text = sModelID;

this.xrtDateTime.Text = DateTime.Now.ToShortDateString().ToString(); // 20018-9-4

if (dtOrd.Rows.Count > 0)

{

DataSet ds = new DataSet();

ds.Tables.Add(dtOrd);

XtraReport report = new XtraReport();

report.DataSource = ds;

report.DataMember = "queryProducts";

List list = new List();

for (int i = 0; i < dtOrd.Rows.Count;i++) {

DataTable dt = new DataTable();

dt.Columns.Add("ITEM_SEQ");

dt.Columns.Add("TESTING_ITEM");

dt.Columns.Add("TESTING_RESULT");

dt.Columns.Add("TESTING_SPECIFICATION");

dt.Columns.Add("DIMENS");

dt.Columns.Add("TESTING_METHOD");

dt.Rows.Add(dtOrd.Rows[i].ItemArray);

list.Add(dt);

}

XRTable table = new XRTable();

for (int i = 0; i < dtOrd.Rows.Count; i++)

{

if (list[i]!=null) {

XRTableRow row = new XRTableRow();

XRTableCell TESTING_ITEM = new XRTableCell();

XRTableCell TESTING_RESULT = new XRTableCell();

XRTableCell TESTING_SPECIFICATION = new XRTableCell();

XRTableCell DIMENS = new XRTableCell();

XRTableCell TESTING_METHOD = new XRTableCell();

row.Cells.Add(TESTING_ITEM);

row.Cells.Add(TESTING_RESULT);

row.Cells.Add(TESTING_SPECIFICATION);

row.Cells.Add(DIMENS);

row.Cells.Add(TESTING_METHOD);

//TESTING_ITEM.WidthF = 140.14f;

//TESTING_RESULT.WidthF = 140.14f;

//TESTING_SPECIFICATION.WidthF = 140.14f;

//DIMENS.WidthF = 140.14f;

//TESTING_METHOD.WidthF = 140.14f;

TESTING_ITEM.DataBindings.Add("Text", list[i], "TESTING_ITEM");

TESTING_RESULT.DataBindings.Add("Text", list[i], "TESTING_RESULT");

TESTING_SPECIFICATION.DataBindings.Add("Text", list[i], "TESTING_SPECIFICATION");

DIMENS.DataBindings.Add("Text", list[i], "DIMENS");

TESTING_METHOD.DataBindings.Add("Text", list[i], "TESTING_METHOD");

xrTable7.Rows.Add(row);

}

}

DetailBand detailBand = new DetailBand();

detailBand.Controls.Add(table);

report.Bands.Add(detailBand);

}

return true;

}

catch (Exception ex)

{

CommonFunction.ShowMsgBox(ex.Message);

return false;

}

}

private void ReportHeader_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)

{

FillHeader();

}

}

}

显示结果如下:

3b6f813a2520184905c49f7f5e91c277.png

另:Report绑定图片:从工具箱拖入xrPictureBox,设置imageUrl载入图片,调整位置和大小即可。

Table下方内容会随着Table数据的多少进行下移(如果数据多的话),所以不用担心会被覆盖。

其他测试过的绑定xrTable的方法(但是都行不通,最多只能绑定一行数据),代码如下:

private bool FillHeader()

{

try

{

if (dtOrd == null)

{

CommonFunction.ShowMsgBox("请先选择需要打印的ITEM!");

return false;

}

this.xrtBatchID.Text = sBatchID;

this.xrtModel.Text = sModelID;

this.xrtDateTime.Text = DateTime.Now.ToShortDateString().ToString(); // 20018-9-4

if (dtOrd.Rows.Count > 0)

{

DataSet ds = new DataSet();

ds = GetTempDataSet();

if (ds != null)

{

SetDataBind(ds);

}

DataRow drPur = dtOrd.Rows[0];

string sheetID = string.Empty;

if (drPur == null) return false;

//绑定采购单信息

BindFormData(drPur);

//获取采购单ID

//sheetID = drPur["ID"].ToString();

//获取采购单明细数据集

DataSet dsDetail = new DataSet();

dsDetail.Tables.Add(dtOrd);

//绑定采购单明细信息

BindTableData(dsDetail);

}

return true;

}

catch (Exception ex)

{

CommonFunction.ShowMsgBox(ex.Message);

return false;

}

}

private void BindTableData(DataSet ds)

{

this.xrTableCell11.DataBindings.Add("Text", ds, "TESTING_ITEM");

this.xrTableCell12.DataBindings.Add("Text", ds, "TESTING_RESULT");

this.xrTableCell13.DataBindings.Add("Text", ds, "TESTING_SPECIFICATION");

this.xrTableCell14.DataBindings.Add("Text", ds, "DIMENS");

this.xrTableCell15.DataBindings.Add("Text", ds, "TESTING_METHOD");

}

private void SetDataBind(DataSet ds)//绑定数据源

{

this.xrTableCell11.DataBindings.Add("Text",ds, "TESTING_ITEM");

this.xrTableCell12.DataBindings.Add("Text",ds, "TESTING_RESULT");

this.xrTableCell13.DataBindings.Add("Text",ds, "TESTING_SPECIFICATION");

this.xrTableCell14.DataBindings.Add("Text",ds, "DIMENS");

this.xrTableCell15.DataBindings.Add("Text",ds, "TESTING_METHOD");

}

///

/// 绑定采购单明细信息

///

private void BindFormData(DataRow dr)

{

//DataSet ds = DataSetOperator.DataRowToDataSet(dr);

//XRLabel绑定数据 方法1:

this.xrTableCell11.Text = dr["TESTING_ITEM"].ToString();

this.xrTableCell12.Text = dr["TESTING_RESULT"].ToString();

this.xrTableCell13.Text = dr["TESTING_SPECIFICATION"].ToString();

this.xrTableCell14.Text = dr["DIMENS"].ToString();

this.xrTableCell15.Text = dr["TESTING_METHOD"].ToString();

//XRLabel绑定数据 方法2:

//this.txtDB0337A.DataBindings.Add(new XRBinding("Text", ds, "DB0337A", "{0:yyyy-MM-dd}"));

//this.txtDB0005A.Text = dr["DB0005A"].ToString();

//this.txtDB0339A.Text = dr["DB0339A"].ToString();

//this.txtDB0345A.DataBindings.Add(new XRBinding("Text", ds, "DB0345A", "{0:n2}"));

//this.labPrintTime.Text = DateTime.Now.Date.ToString();

}

private void ReportHeader_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)

{

FillHeader();

}

private DataSet GetTempDataSet()

{

DataSet ds = new DataSet();

DataTable dt = new DataTable("tempTable");

dt.Columns.Add("TESTING_ITEM");

dt.Columns.Add("TESTING_RESULT");

dt.Columns.Add("TESTING_SPECIFICATION");

dt.Columns.Add("DIMENS");

dt.Columns.Add("TESTING_METHOD");

DataRow tempRow;

if (dtOrd != null)

{

for (int i = 0; i < dtOrd.Rows.Count; i++)//i:Row

{

tempRow = dt.NewRow();

tempRow[i] = dtOrd.Rows[i];

dt.Rows.Add(tempRow);

}

ds.Tables.Add(dt);

}

return ds;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值