1、MSCRM模拟lookup效果的操作手册合同定单new_salesorderid,合同定单产品 new_templookup2(要实现lookup效果的字段)合同定单产品名称new_salesorderdetailid,合同定单产品new_salesorderdetailname这两个字段为 实现lookup效果字段所要取数据所在的实体的id和名称,默认不可见上图中 合同定单产品 实现 模拟lookup的效果。以下以此为例解说。1、 在实体上创建一个要实现lookup效果的单行文本类型的字段【合同定单产品 】 new_templookup2以及字段【合同定单产品名称】new_salesorde
2、rdetailid,【合同定单产品】new_salesorderdetailname2、在js的Form_onload方法中注册该字段的onclick事件。document.getElementById(new_templookup2).onclick = New_Hetddcp_Click;3、在js中创建function New_Hetddcp_Click,点击触发该方法,到请求isv页面生成相应数据并显示,接着设置lookup的返回值。 红色框中的是要根据情况替换掉的字段。4、在js中创建function setSingleLookupValue,设置lookup的返回值,此functi
3、on不需要改动。5、创建function simulateSalesOrderDetail1089 是在请求的isv页面/ISV/SingleLookup.aspx中定义的(isv页面后面会讲)红色框字段是要替换的。6、创建function simulateLookup ,模拟lookup不需要更改7、isv页面/ISV/SingleLookup.aspx ,查询数据并以窗口显示 7.1、后台页面代码:调用的function List_Bind中:7.2、前台页面代码:Js代码:8、后面为例子中所涉及到的相关代码。Js代码:/ / / 随机附件/ 判断新建的入口,如果是从报价单来的就控制报价单
4、产品可选,合同订单产品不可用,否则反之function setSingleLookupValue(fieldName, guidField, displayField, lookupData, clickEvent) / / 设置Lookup返回值 / / / 字段名称 / / / ID字段 / / / 名称字段 / / / Lookup的值 / / / 点击事件 / / if (!IsNull(lookupData) fa(displayField).setValue(lookupData0.name); fa(guidField).setValue(lookupData0.id); /si
5、mulatelookup2(fieldName); simulateSalesOrderDetail(fieldName, lookupData, false); document.getElementById(fieldName).onclick = clickEvent; function simulateSalesOrderDetail(fieldName, lookupData, disabled) return simulateLookup(fieldName, lookupData, disabled, 1089, salesorderdetail, 合同订单产品);functio
6、n simulateQuoteDetail(fieldName, lookupData, disabled) return simulateLookup(fieldName, lookupData, disabled, 1085, quotedetail, 报价单产品);function simulateLookup(fieldName, lookupData, disabled, otc, otn, otnDisplay) / / 模拟Lookup / / / 字段名称 / / / 字段值 / / / 是否只读 / / / 实体代码 Object Type Code / / / 实体名称 O
7、bject Type name / / / 实体中文名称 Object Type name / / var x = window.document.getElementById(fieldName + _d); var innerHtml = ; var onclickEvent = disabled ? openDisabledLui(new Sys.UI.DomEvent(event) : openLui(new Sys.UI.DomEvent(event); var renderValue = ; if (IsNull(lookupData) renderValue = ; else r
8、enderValue = + lookupData0.name + ; innerHtml = + renderValue + 合同产品编号; x.innerHTML = innerHtml;function New_Hetddcp_Click() / / 合同订单改变时加载相应的合同订单产品 / var fieldName = new_templookup2; /if(crmForm.all.new_salesorderid.DataValue = null) if (fv(new_salesorderid) = null) alert(请先选择合同定单); else if (locatio
9、n.href.toLowerCase().indexOf(ORG_UNIQUE_NAME + .) 0) var url = http:/ + document.location.host + /ISV/SingleLookup.aspx?entity=salesorder&guid= + fv(new_salesorderid)0.id + &userid= + Xrm.Page.context.getUserId(); var rv = openStdDlg(url, , 880, 700, false); setSingleLookupValue(fieldName, new_sales
10、orderdetailid, new_salesorderdetailname, rv, New_Hetddcp_Click); else var url = /ISV/SingleLookup.aspx?entity=salesorder&guid= + fv(new_salesorderid)0.id + &userid= + Xrm.Page.context.getUserId(); var rv = openStdDlg(url, , 880, 700, false); setSingleLookupValue(fieldName, new_salesorderdetailid, ne
11、w_salesorderdetailname, rv, New_Hetddcp_Click); function New_QuoteDetail_Click() / / 报价单改变时加载相应的报价单产品 / debugger; var fieldName = new_templookup1; /if(crmForm.all.new_quoteid.DataValue = null) if (fv(new_quoteid) = null) alert(请先选择报价单); else if (location.href.toLowerCase().indexOf(ORG_UNIQUE_NAME +
12、.) 0) var sUrl = http:/ + document.location.host + /ISV/SingleLookup.aspx?entity=quote&guid= + fv(new_quoteid)0.id + &userid= + Xrm.Page.context.getUserId(); var rv = openStdDlg(sUrl, , 880, 700, false); setSingleLookupValue(fieldName, new_quotedetailid, new_quotedetailname, rv, New_QuoteDetail_Clic
13、k); else var sUrl =/ISV/SingleLookup.aspx?entity=quote&guid= + fv(new_quoteid)0.id + &userid= + Xrm.Page.context.getUserId(); var rv = openStdDlg(sUrl, , 880, 700, false); setSingleLookupValue(fieldName, new_quotedetailid, new_quotedetailname, rv, New_QuoteDetail_Click); function IFRAME_detail_onloa
14、d() function ReadSalesOrderDetailLookupData() / / 非新建页面加载时将合同订单产品加载上 / if (IsNull(fv(new_salesorderdetailid) return null; var lookupData = new Array(); var lookupItem = new Object(); lookupItem.id = fv(new_salesorderdetailid); lookupItem.typename = salesorderdetail; lookupItem.name = fv(new_salesord
15、erdetailname); lookupData0 = lookupItem; return lookupData;function ReadQuoteDetailLookupData() / / 非新建页面加载时将报价单产品加载上 / if (IsNull(fv(new_quotedetailid) return null; var lookupData = new Array(); var lookupItem = new Object(); lookupItem.id = fv(new_quotedetailid); lookupItem.typename = quotedetail;
16、 lookupItem.name = fv(new_quotedetailname); lookupData0 = lookupItem; return lookupData;function Form_onload() / / 根据报价单或合同订单,加载对应的产品信息 / /debugger; / 设置报价单产品和id,合同订单产品和id不可见 fc(new_quotedetailid).setVisible(false); fc(new_quotedetailname).setVisible(false); /fc(new_salesorderdetailid).setVisible(fa
17、lse); /fc(new_salesorderdetailname).setVisible(false); if (fv(new_quoteid) != null) /crmForm.all.new_salesorderid.Disabled = true; /crmForm.all.new_templookup2.Disabled = true; fc(new_salesorderid).setDisabled(true); fc(new_templookup2).setDisabled(true); if (fv(new_salesorderid) != null) /crmForm.a
18、ll.new_quoteid.Disabled = true; /crmForm.all.new_templookup1.Disabled = true; fc(new_quoteid).setDisabled = true; fc(new_templookup1).setDisabled = true; / 只读或作废状态下不可编辑 if (Xrm.Page.ui.getFormType() = 3 | Xrm.Page.ui.getFormType() = 4) simulateSalesOrderDetail(new_templookup2, ReadSalesOrderDetailLo
19、okupData(), true); simulateQuoteDetail(new_templookup1, ReadQuoteDetailLookupData(), true); else simulateSalesOrderDetail(new_templookup2, ReadSalesOrderDetailLookupData(), false); simulateQuoteDetail(new_templookup1, ReadQuoteDetailLookupData(), false); document.getElementById(new_templookup1).onclick = New_QuoteDetail_Click;/ document.getElementById(new_templookup2).onclick = New_Hetddcp_Click; / 新建状态下隐藏随机附件明细 if (Xrm.Page.ui.getFormType() = 1 | Xrm.Page.ui.getFormType() = 6) / crmForm.all.IFRAME_detail.style.display = none; fc(test).setVisible(false); function Form_onsave() / s