2

我正在处理一个表单,其中某个部分的可见性基于表单上的特定字段。有问题的部分还有一个子网格(“WorkingDataRequestsGrid”)。显示该字段的逻辑工作正常。但是,它没有按预期过滤。子网格使用我专门为此功能设置的视图。它显示来自具有特定类型和状态的同一实体的记录。

子网格的属性

除了按类型和状态进行过滤之外,结果还应按与当前案例的关系进行过滤。例如,系统中有 3,500 个文档。在这 3,500 个文档中,只有 25 个具有正确的类型/状态组合。在这 25 人中,只有 3 人是针对同一案件的。内联查找应该只显示这三个文件。它仍然显示所有 3,500。当我点击查找更多记录按钮时,它不会被我设置的自定义视图过滤。

由于过滤器使用案例(事件)的连接,我不能使用 addCustomFilter 或 preSearch。由于链接实体,我仅限于“addCustomView”功能。当我根据高级查找中的 fetch XML 设置自定义视图时,页面会产生以下错误:

异常警报

文档的状态字段有一个触发以下 javascript 的 onChange 事件:

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,因此它不会设置自定义视图。

我想我只是关注这个问题太久了。很可能这是我错过的一个非常小的问题。我需要一双全新的眼睛才能看到我看不到的东西。

我需要帮助解决两个问题:

  1. 关于过滤器为什么不使用指定视图的任何想法?
  2. 为什么 onLoad 事件无权访问查找控件?

    表单属性中设置的几个 javascript 方法的执行顺序导致“对象不支持”错误。一种方法是隐藏该部分,因此无法找到它。这已经解决了。

    经过进一步审查,执行顺序实际上并没有解决问题。它从未调用 addCustomView 逻辑,因为它没有找到“LookupControl”。所以,回到在这两个问题上都需要帮助的问题上!

任何帮助是极大的赞赏!

4

0 回答 0