我正在开发一个表单,其中某个部分的可见性基于表单上的特定字段。相关部分还有一个子网格(“WorkingDataRequestsGrid”)。显示该字段的逻辑工作正常。 但是,它没有按预期进行过滤。子网格使用我专门为此功能设置的视图。 它显示来自同一实体的具有特定类型和状态的记录。
除了按类型和状态过滤之外,还应按与当前案例的关系来过滤结果。 例如,系统中有3500个文档。在这 3,500 个文档中,只有 25 个具有正确的类型/状态组合。 在这 25 个案件中,只有 3 个属于同一案件。 内联查找应仅显示这三个文件。 它仍然显示全部 3,500 个。当我点击查找更多记录按钮时,它不会被我设置的自定义视图过滤。
由于过滤器使用案例(事件)连接,我无法使用 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”。 所以,回到在这两个问题上都需要帮助!
非常感谢任何帮助!
addCustomView 适用于子网格吗?