有時要求明細表在流程審批的特定環節只能看到其中的一部分資料。
比如:某路由器分銷公司,代理3個品牌:H3C、ZTE、CISCO,每個品牌的報價分別由不同部門負責,在處理客戶訂單時,訂單中可能包含各種品牌的路由器,流程處理時,需要按品牌拆分明細表,由不同部門分別處理相應的銷售條目。
明細表拆分可以通過設定達成,對於複雜的拆分邏輯也可以撰寫程式碼做到。
拆分效果
在H3C處理環節,只能看到明細表中H3C產品項目。
通過設定達成
在節點屬性中的“資料控制”頁籤可進入“明細表過濾”設置介面,對相應欄位設定過濾值即可。
本例中使用變數過濾,也可以在開窗中選擇其他過濾值,比如表單欄位和處理人帳號、部門、擴展屬性匹配。
程式碼過濾
當過濾條件複雜時,還可以使用程式碼過濾。
使用程式碼過濾時,在節點屬性\事件頁籤\OnFiltering事件中撰寫相應程式碼即可。
過濾時只需對明細表資料按行迴圈,對不可見的行設定row.Visible = false即可。
本例程式碼:
FlowDataTable table = Context.Current.FormDataSet.Tables["PurchaseDetail"];
foreach(FlowDataRow row in table.Rows)
{
string prodCode = Convert.ToString(row["ItemCode"]);
if (prodCode.StartsWith("1")) //H3C產品編碼以“1”開頭
row.Visible = true;
else
row.Visible = false;
}