【问题标题】:CRM 2013 - FetchXML & the subgridCRM 2013 - FetchXML 和子网格
【发布时间】:2015-01-28 00:42:22
【问题描述】:

我的代码需要一些帮助,因为在 CRM 2011 到 CRM 2013 中,将自定义 FetchXml 应用到子网格的实现似乎已经发生了变化。请注意,这不是 setParameter 与 SetParameter 大小写的问题,因为我一直在到处寻找互联网。我的问题是如何引用子网格并调用 SetParameter 方法。

这是我的代码:

function uc_addCaseFilterToCaseGrid() {
   var contactGuid = Xrm.Page.data.entity.getId();

  //create a filter xml
   if (contactGuid != null) 
   {
          var filter = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>";
                filter += "<entity name='uc_crecord'>";
                filter += "<attribute name='uc_casemanager' />";
                filter += "<attribute name='uc_cindividual' />";
                filter += "<attribute name='uc_rindividual'/>";
            filter += "<filter type='or'>" +
                       "<filter type='or'>" +
                        "<condition attribute='uc_casemanager' operator='eq' value='" + contactGuid + "'/>" +
                        "<condition attribute='uc_cindividual' operator='eq' value='" + contactGuid + "'/>" +
                        "<condition attribute='uc_rindividual' operator='eq' value='" + contactGuid + "'/>" +
                        "</filter>" +
                     "</filter>" +
                         "</entity>" +
                 "</fetch>";

        //add filter
            //var caseGrid = Xrm.Page.getControl("gPR");
           ***//var caseGrid = Xrm.Page.ui.controls.get("gPR");
           var caseGrid = document.getElementById("gPR").control;***

            if (caseGrid == null) 
            {
               //The caseGrid hasn't loaded, wait 1 second and then try again     
               setTimeout(uc_addCaseFilterToCaseGrid, 3000);
               return;
            }

            caseGrid.control.SetParameter("fetchXML",filter);
            caseGrid.control.Refresh();
    }
}

此代码不起作用,因为粗体、斜体字行给我带来了问题。

如果我使用 getElementByID(不推荐,而不是我想采用的方法),则代码 SetParameter 将按预期执行。

但是,我想使用以下设置变量:

var caseGrid = Xrm.Page.getControl("gPR");

因为我想确保未来的支持。但是当我调用 SetParameter 时,我得到一个错误“对象不支持属性或方法'SetParameter'”。什么给了?

我尝试了以下方法:

caseGrid.control.SetParameter("fetchXML",filter);

caseGrid.SetParameter("fetchXML",filter);

Xrm.Page.getControl(gPR)._control.get_innerControl()._element.control.SetParameter("fetchXML",filter);

我试过 setParameter 和 SetParameter 并且都产生相同的结果。

我已经使用 XRMToolkit 测试了 fetchXml 并且它很好,所以这不是问题(很可能,但它可能是!)

我正在绕弯子试图弄清楚 - 您是否可能无法在 CRM 2013 中再使用 SetParameter(但您可以在 2011 年)?如果是这样,我还能如何为子网格提供 fetchXml?

在 IE11、CRM 2013 更新汇总包 1 + 服务包 1 中测试。

感谢您的宝贵时间。

【问题讨论】:

    标签: dynamics-crm-2013 microsoft-dynamics


    【解决方案1】:

    请随意停止尝试绕过弯道。欢迎来到 CRM 2013 和 2015。

    Xrm.Page.getControl 返回的Object支持设置子网格的 FetchXML。您使用 getElementById 是实现此目标的唯一方法,尽管它不受支持并且在技术上可能会因更新而中断。

    顺便说一句,它在 2011 年实际上并未得到支持 - 如果您查看 SDK,则没有记录的方法可以更改子网格的 FetchXML。它起作用的事实(我相信)是旧 Htc 网格的产物。 2013 年和 2015 年不再使用该网格,因此副作用不再起作用。

    希望这更像是一个实际的答案,而不仅仅是对您已经发现的内容的确认。

    【讨论】:

    • 感谢您的确认。这是我第一次接触 CRM,当您看到引用旧版本的代码时会感到困惑。对我来说有趣的是 Xrm.Page.get control(“my control”).$c_0.setParameter("fetchXml", myfetchxml) (其中 $c_0 是一些随机混合的字符)是一种享受。(我可能有因为我今天不上班,所以这里的语法有点不正常)但是我还是更愿意使用 getElementById,因为至少元素名称是由我在表单设计中定义的,不像这种随机混合的字符。
    【解决方案2】:

    document.getElementById("SubgridName") 不起作用。试试

    var leadwithSameNameGrid = window.parent.document.getElementById("SubgridName"); 现在子网格将拥有控件。尝试超时,因为获取控件需要一些时间。获取控件,设置 fetchxml 参数并刷新使用以下代码。

    函数 filterSubGrid() {

    var leadwithSameNameGrid = window.parent.document.getElementById("SubgridName");
    
    if (leadwithSameNameGrid == null) 
    {
        setTimeout(filterSubGrid, 500);
        return;
    }
    
    //fetch xml code 
    
    if (leadwithSameNameGrid.control != null) 
    {
        leadwithSameNameGrid.control.SetParameter("fetchXml", fetchXml); //set the fetch xml to the sub grid   
        leadwithSameNameGrid.control.refresh(); //refresh the sub grid using the new fetch xml
    } 
    else 
    {
        setTimeout(filterSubGrid, 500);
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多