Dynamics CRM

需求描述:      

      補充記錄一下如何通過 JavaScript 對 Lookup 字段添加條件過濾。如下圖所示,選擇 <Default Receipt Recipient> 時要求只能選擇當前 Account 下的 Receipt Recipient。

解決方案:

      1.首先,通過 Advanced Find 獲取過濾條件的 XML 文本。

       2.通過 JavaScript 為字段添加過濾函數,具體代碼實現如下:

 1 function fnOnChange_Default_Receipt_Recipient() {
 2     var accountID = Xrm.Page.data.entity.getId();
 3 
 4     try {
 5         //Add custom filter
 6         if (accountID != "") {
 7             Xrm.Page.getControl("cus_default_receipt_recipient").addPreSearch(function () {
 8                 fnDefaultReceiptRecipientSearchHandler();
 9             })
10         }
11     }
12     catch (e) {
13         Xrm.Utility.alertDialog("AddDefaultReceiptRecipienFilter Error: " + (e.description || e.message));
14     }
15 }
16 
17 function fnDefaultReceiptRecipientSearchHandler() {
18     var accountID = Xrm.Page.data.entity.getId().replace("{", "").replace("}", "").toLowerCase();
19     var fetchXml = "<filter type='and'><condition attribute='cus_account_no' operator='eq' value='" + accountID + "' /></filter>";
20     Xrm.Page.getControl("cus_default_receipt_recipient").addCustomFilter(fetchXml);
21 }

      Note: 這裏就是給字段添加一個 PreSearch 函數,當點擊 Lookup 字段的放大鏡時,系統執行了 PreSearch 函數,對字段附加了一個 customFilter,需要注意的是,有時我們發現 addPreSearch只有在第一次執行是有效果,之後的執行效果都是查詢不到有效數據,原因是:addPreSearch 的匿名函數必須是無參數的函數。

      

原文地址:https://www.cnblogs.com/Sunny20181123/p/14788816.html