1

我正在尝试在 crm 2011 中创建一个过滤的子网格。我发现以下链接描述了如何制作它:http: //community.dynamics.com/product/crm/f/117/p/76157/140281.aspx

这是建议构建代码的方式:

var relatedOHSOrders = document.getElementById("OHSOrderSubGrid_d"); //Set Subgrid Id
var fetchXml = "..."
relatedOHSOrders.control.setParameter("fetchXml", fetchXml);

我遇到的问题是我得到Object does not support .setParameter property or method了,当我调试它时,为了以防万一,我没有在relatedOHSOrders.control. I Uninstalled and reinstalled rollup 11 下看到 setParameter 但仍然有同样的问题!

请注意,我尝试了其他方式来使用 setParameter。下面的代码也不起作用

Xrm.Page.getControl("OHSOrderSubGrid")._control.get_innerControl();
relatedOHSOrders.setParameter("fetchXml", fetchXml);

似乎每个人都使用此代码来过滤子网格,但我不确定我的问题是什么,它没有出现。

提前感谢您的任何帮助或建议。

4

3 回答 3

3

如您所知,Microsoft Dynamics CRM on-premises 的最新更新汇总和 Microsoft Dynamics CRM Online 的服务更新包括 Web 应用程序中的重大更改,以便能够支持各种浏览器。看看这篇文章:http: //support.microsoft.com/kb/2795627

您尝试使用的脚本在以前的 RUP 版本的 CRM 中工作。setParameter函数不再可用。现在您可以使用SetParameter代替它。幸运的是刷新功能仍然可用。因此,更改代码中的函数名称,它将起作用。

于 2013-01-30T13:54:03.053 回答
2

我自己找到了我的问题的答案。下面的代码完美地工作

function setOhsOrderGrid()
{
   var relatedOrders = document.getElementById("OrderSubGrid"); //Set Subgrid Id

    //If this method is called from the form OnLoad, make sure that the grid is loaded before   proceeding
    if (relatedOrders == null || relatedOrders.readyState != "complete") {
        //The subgrid hasn't loaded, wait 1 second and then try again
        setTimeout('setOhsOrderGrid()', 1000);
        return;
    }

    var fetchXml = "<?xml version='1.0'?>";
    fetchXml += "<fetch distinct='false' mapping='logical' output-format='xml-platform'    version='1.0'>"; 
    fetchXml += "<entity name='new_ohsorder'> <attribute name='new_orderid'/>";
    fetchXml += "<attribute name='new_order_no'/>";
    fetchXml += "<attribute name='createdon'/>"; 
    fetchXml += "<order descending='false' attribute='new_order_no'/>";
    fetchXml += "<filter type='and'> <condition attribute='new_clientcontactid' value='{1E9A621B-ACA1-E011-9A67-005056A8002D}' uitype='new_clientcontact' uiname='OHS-000001-6FBC4-CCR-01' operator='eq'/>";
    fetchXml += "</filter>";
    fetchXml += "</entity>";
    fetchXml += " </fetch>";

    relatedOrders.control.setParameter("fetchXml", fetchXml); --> It breaks
   relatedOrders.control.refresh();  --> It breaks

}; 

setOhsOrderGrid();


我不得不将 var relatedOrders = document.getElementById("OrderSubGrid_d") 更改为 var relatedOrders = document.getElementById("OrderSubGrid")


我收到一条评论说 setParameter 不受支持。我不知道为什么以及如何知道这一点。因为 setParameter document.getElementById("OrderSubGrid").control.setParameter !!! 有人知道吗?我想知道是否有人知道如何以受支持的方式编写过滤器子网格!??

于 2013-01-11T20:28:06.640 回答
0

只需将 替换control.setParametercontrol.SetParameter

有关更多详细信息,请查看此MSDN 文章

于 2015-04-23T13:01:26.887 回答