我正在处理一个表单,其中某个部分的可见性基于表单上的特定字段。有问题的部分还具有一个子网格(“ WorkingDataRequestsGrid”)。显示字段的逻辑运行良好。但是,它没有按预期进行过滤。子网格使用我专门为此功能设置的视图。它显示来自同一实体的具有特定类型和状态的记录。
除了按类型和状态进行过滤之外,还应按与当前案例的关系来过滤结果。例如,系统中有3500个文档。在这3500个文档中,只有25个具有正确的类型/状态组合。在这25个案例中,只有3个案例适用于同一案例。内联查找应仅显示这三个文件。它仍然显示所有3500。当我点击“查找更多记录”按钮时,该按钮不会被我设置的自定义视图过滤。
由于过滤器使用的是案例(事件)的联接,因此无法使用addCustomFilter或preSearch。由于链接的实体,我仅限于“ addCustomView”功能。当我基于来自高级查找的获取XML设置自定义视图时,页面会产生此错误:
文档的状态字段具有一个onChange事件,该事件会触发以下javascript:
function getCustomView() {
try {
var LookupControl = Xrm.Page.getControl("WorkingDataRequestsGrid");
if (LookupControl != null) {
var CaseId = Xrm.Page.getAttribute("confidentialdocuments").getValue()[0].id;
var Casename = Xrm.Page.getAttribute("confidentialdocuments").getValue()[0].name;
var fetch = "<fetch distinct='false' mapping='logical' output-format='xml-platform' version='1.0'>" +
" <entity name='confidentialdocument'>" +
" <attribute name='documenttitle'/>" +
" <attribute name='typeofrequest'/>" +
" <attribute name='createdby'/>" +
" <attribute name='respondingparty'/>" +
" <attribute name='noofquestions'/>" +
" <attribute name='dataresponseduedate'/>" +
" <attribute name='confidentialdocumentid'/>" +
" <order descending='false' attribute='documenttitle'/>" +
" <filter type='and'>" +
" <condition attribute='documenttype' value='{33F7488F-DE7C-E511-813B-1458D04E7900}' uitype='new_documenttype' uiname='Data Request' operator='eq'/>" +
" <condition attribute='documentstatus' value='413360000' operator='eq'/>" +
" <condition attribute='confidentialdocuments' value='" + CaseId + "' uitype='incident' uiname='" + Casename + "' operator='eq'/>" +
" </filter>" +
" <link-entity name='incident' alias='a_f409103f050fe71181091458d04dd6c8' link-type='outer' visible='false' to='confidentialdocuments' from='incidentid'>" +
" <attribute name='title'/>" +
" </link-entity>" +
" </entity>" +
"</fetch>";
//columns to display in the custom view (make sure to include these in the fetch query)
var layout = "<layoutxml>" +
"<grid name='resultset' icon='1' preview='1' select='1' jump='name' object='10013'>" +
" <row id='confidentialdocumentid' name='result'>" +
" <cell name='documenttitle' width='100'/>" +
" <cell name='a_f409103f050fe71181091458d04dd6c8.title' width='100' disableSorting='1'/>" +
" <cell name='createdby' width='100'/>" +
" <cell name='typeofrequest' width='100'/>" +
" <cell name='noofquestions' width='100'/>" +
" <cell name='respondingparty' width='100'/>" +
" <cell name='dataresponseduedate' width='100'/>" +
" </row>" +
"</grid>" +
"</layoutxml>";
var viewId = "{00000000-0000-0000-0000-000000000009}";// add the randomly generated GUID for the view id
var entityName = "confidentialdocument";//add the entity name
var viewDisplayName = "Working Confidential Data Request Documents";// add the view display name
//alert(viewId + " --- " + entityName + " --- " + viewDisplayName);
Xrm.Page.getControl("WorkingDataRequestsGrid").addCustomView(viewId, entityName, viewDisplayName, fetch, layout, true);
}
}
catch (error) {
alert("Error in ConfidentialJs, Method Name: getCustomView(), Error: " + error.message);
}
}
注意:我使用Solutions Customizations.xml中的xml更新了“布局” XML。
我在javaScript中有一些警报语句,因此我可以看到发生了什么。当字段更改为正确的状态时,将触发javaScript函数。它也会在onLoad事件期间触发,但“ LookupControl”显示为null,因此不会设置自定义视图。
我认为我一直在研究这个问题太久了。可能是我只是想念一个很小的问题。我需要换新的眼睛才能看到我看不到的东西。
我需要两个问题的帮助:
在表单属性中设置的多个javascript方法的执行顺序导致了“对象不支持”错误。一种方法是隐藏该节,使其找不到。该问题已解决。
进一步检查后,执行顺序实际上并未解决问题。它从来没有调用过addCustomView逻辑,因为它找不到“ LookupControl”。因此,回到在这两个问题上都需要帮助!
非常感谢您的帮助!