问题描述
我的xrTable中有数百行。该表包含很少的列,而我唯一停留在这里的是如何基于xrTableRow_BeforePrint
来控制xrTableCell(列索引3)private void xrTableRow101_BeforePrint(object sender,System.Drawing.Printing.PrintEventArgs e)
{
XRTableRow tr = new XRTableRow();
tr = (XRTableRow)sender;
////belw this should be if() for column 3 in that particular row
if (tr.Cell.[ -- get control column index 3 here ---].Text == "")
{
tr.Visible = false;
}
}
很显然,我可以为每一行执行多行代码,但是我想在这里所做的只是简化代码,使其成为一种功能。这样我就可以向我想要的所有行声明单个类函数。
解决方法
参考这些:
How to loop through all rows in xrtable in XtraReport
How to loop through all rows in an XtraReport
要获取XRTable行集合,请改用XRTable.Rows属性。请注意,FindControl方法返回一个XRControl对象,因此有必要将其强制转换为适当的类型。例如:
XRTable table = report.FindControl("xrTable1",true) as XRTable;
foreach (XRTableRow row in table.Rows)
foreach (XRTableCell cell in row.Cells)
....
注意:您只能迭代通过设计器添加的行。如果您的报表与数据库绑定,则建议您处理所需XRTableCell的BeforePrint事件,并在那里获取单元格文本(使用XRTableCell.Text属性或XtraReport.GetCurrentColumnValue method)。