在MSCRM2011中,可以用Xrm.Page.getControl("字段名").addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, isDefault)給Lookup控件的查找頁面加入自定義篩選器。
使用以下代碼可在沒有Lookup控件的情況下,直接調(diào)用查找頁面并加入自定義篩選器:
var entityName = "account"; //實(shí)體名
var etc = 1; //實(shí)體ObjectTypeCode
var CustomView = { name: "自定義視圖", recordType: etc };
CustomView.id = "{65EC9B45-EE81-4F89-BAF6-E8603FF8E1E4}"; //自定義視圖id(可隨意,不要與系統(tǒng)的重復(fù)即可)
CustomView.fetchXml = //不會寫fetchXml可用高級查找進(jìn)行幫助
"<fetch version=\"1.0\" output-format=\"xml-platform\" mapping=\"logical\" distinct=\"false\">" +
"<entity name=\"" + entityName + "\">" +
"<attribute name=\"name\" />" +
"<attribute name=\"ownerid\" />" +
"<filter type=\"and\">" +
"<condition attribute=\"name\" operator=\"eq\" value=\"客戶名稱\" />" +
"</filter>" +
"</entity>" +
"</fetch>";
CustomView.layoutXml = //顯示的視圖
"<grid name='resultset' icon='1' preview='1'>" +
"<row name='result' id='" + entityName + "id'>" +
"<cell name='name' width='200' />" +
"<cell name='ownerid' width='200' />" +
"</row>" +
"</grid>";
var url = Xrm.Page.context.prependOrgName("/_controls/lookup/lookupinfo.aspx")
+ "?AllowFilterOff=0" //是否允許關(guān)閉篩選器
+ "&objecttypes=" + etc //實(shí)體ObjectTypeCode
+ "&DefaultViewId=" + CustomView.id //默認(rèn)視圖id
+ "&DisableQuickFind=1" //是否禁用搜索按鈕
+ "&DisableViewPicker=1" //是否禁用視圖選擇
+ "&LookupStyle=single" //單選還是多選
+ "&ShowNewButton=0" //是否顯示新建按鈕
+ "&ShowPropButton=1" //是否顯示屬性按鈕
+ "&browse=0"; //如果設(shè)為0,則關(guān)閉并隱藏篩選器
var args = { availableViews: null, customViews: [], items: [] };
args.customViews.push(CustomView);
var retObj = window.showModalDialog(url, args, "dialogWidth:600px;dialogHeight:600px;help:0;status:1;scroll:0;center:1;resizable:yes;");
返回值中,主數(shù)據(jù)可用 retObj.items[0].id 和 retObj.items[0].name 獲取。
其他數(shù)據(jù)以Json格式返回,可惜的是關(guān)聯(lián)字段只有顯示值,沒有GUID(如ownerid只有用戶名,沒有用戶GUID)
if (retObj != undefined)
{
var accountid = retObj.items[0].id; //客戶GUID
var accountName = retObj.items[0].name; //客戶名稱
//由于視圖列中定義了客戶名稱列,也可如下獲取客戶名稱
//var accountName = eval("(" + retObj.items[0].keyValues + ")").name.value;
var ownerName = eval("(" + retObj.items[0].keyValues + ")").ownerid.value; //負(fù)責(zé)人姓名
}
注:如果在自定義的面中要調(diào)用Lookup的查找頁面并加入篩選器,
需注意URL地址在AD和IFD模式部署中可能有所差別,以上代碼中
的 Xrm.Page.context.prependOrgName 將不再可用。