在 Dynamics 365 中使用子网格上的自定义视图进行查找时出现问题

问题描述 投票:0回答:1

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

Properties of the Subgrid

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

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

Alert for the Exception

文档的状态字段有一个 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,因此它不会设置自定义视图。

我想我已经关注这个问题太久了。 很可能这是我所遗漏的一个非常小的问题。 我需要一双新的眼睛才能看到我看不到的东西。

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

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

    表单属性中设置的多个 javascript 方法的执行顺序导致“对象不支持”错误。一种方法是隐藏该部分,这样就无法找到它。已修复。

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

非常感谢任何帮助!

javascript dynamics-crm dynamics-365 subgrid lookupfield
1个回答
0
投票

addCustomView 适用于子网格吗?

© www.soinside.com 2019 - 2024. All rights reserved.