要实现此功能,关键有两点:
1. 如何让系统知道,哪些行是属于同一个单据的?
重载 Initialize 事件, 设置 this.ReportProperty.PrimaryKeyFieldName 属性为单据内码字段名,
例如:
this.ReportProperty.PrimaryKeyFieldName = "FID";
2. 如何让系统知道,哪些字段需要合并显示?
如果需要实现字段支持合并显示,必须使用插件动态构建列并指定列 Mergeable 属性;
请重载 GetReportHeaders 事件,构建全部列。
如果需要字段支持超链接,则需要同步在设计器中,添加此列,并指定其采用显示为超链接
例:
public override ReportHeader GetReportHeaders(IRptParams filter)
{
// FID, FEntryId, 编号、状态、物料、数量、单位、单位精度、单价、价税合计
ReportHeader header = new ReportHeader();
// 编号
var billNo = header.AddChild("FBillNo", new LocaleValue("单据编号"));
billNo.ColIndex = 0;
billNo.IsHyperlink = true; // 支持超链接(这句代码实际不起作用。需要显示超链接的列,必须在BOS设计器中,添加字段定义,在设计器中设置其显示为超链接)
billNo.Mergeable = true; // 此字段在同一张单据的多行时融合
// TODO : 其他字段略
}