要實現此功能,關鍵有兩點:
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 : 其他字段略
}