在CRM 2011中创建Filtered Subgrid时,Object不支持setParameter方法的属性或方法

时间:2013-01-11 02:03:29

标签: dynamics-crm-2011 dynamics-crm

我正在尝试在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.下的setParameter 我卸载并重新安装了汇总11,以防万一,但仍有同样的问题!

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

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

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

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分: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 !!! 有人有任何想法吗? 我想知道是否有人知道如何以受支持的方式编写过滤器子网格!??

答案 2 :(得分:0)

只需将control.setParameter替换为control.SetParameter

有关详细信息,请查看此MSDN article