DevExpress.XtraReports.UI.XtraReport表格如何合并单元格?
我也遇见这个问题了 网上找了好半天!最后的结果是
XtraReport 的 XRTable 不能合并行(XRTableRow)
最多可以实现合并列的效果但是没有意义 只不过是吧 XRTableRow 删除一个列
我自己的解决办法是创建多个 XRTable 拼成一个大XRTable的效果
这样就可以实现
有一个小小的问题是 XRTable 和 XRTable 之间的位置要定义好
也可以代码控制
/// <summary>
/// 获取XRTable位置
/// </summary>
/// <param name="p_info">Page容器(只存在XRTable才有效)</param>
/// <returns>得到位置</returns>
private Point GetTable(PageHeaderBand p_info)
{
Point point = new Point();//XRTable.Location(坐标位置(类型是Point ))
point.X = 0;//默认位置是纸张减去边距的位置(0就可以了)
point.Y = 0;//默认是XRTable的高度如果设置高了会出现空白(所以一直不用设置保持0)
foreach (XRTable item in p_info.Controls)
{
//将Page容器里的所有XRTable宽度叠加就是你下一个 XRTable的位置
//根据情况减去 边框宽度
point.X += (item.Width-3);
}
return point;
}
得到了坐标位置后在加入到容器中就可以了
CreateTableHeader 方法只是举例 请勿直接使用
private PageHeaderBand CreateTableHeader()
{
PageHeaderBand new_PageHeaderBand = new PageHeaderBand();
XRTable tableHeader = new XRTable();
XRTableRow headerRowOne = new XRTableRow ();//一级表头
XRTableRow headerRowTwo = new XRTableRow ();//二级表头
tableHeader.Rows.Add(headerRowOne);
tableHeader.Rows.Add(headerRowTwo);
tableHeader.Location = GetTable(new_PageHeaderBand);
new_PageHeaderBand.Controls.Add(tableHeader);
}
恩,谢谢你,后来我也想到了用多个XRTable拼出来,现在已经实现了,和你的方法差不多的。
2024-09-04 广告