更改MSCRM 2011子网格实体

时间:2013-04-16 12:36:22

标签: javascript dynamics-crm-2011 subgrid

我知道如何修改子网格的FetchXml。我试图基于JS中的选项集的选择来动态更改子网格。基于选项集,子网格将需要能够显示不同的实体(不是同时) 示例:子网格当前显示具有特定关系类型的帐户。选项集会更改,现在子网格应显示其名字为John的Leads。

我收到的错误是“FetchXml中指定的实体名称与EntityExpression中的实体名称不匹配”

我将下面的fetch提供给网格。这只是一个多值搜索。 rc_entitylist包含系统中的所有实体。 rc_attributelist包含所选实体的所有字段。用户选择一个实体,选择要搜索的字段,输入搜索条件(每行一个值),然后相应地填充子网格。

function runSearch() {
var entityname = Xrm.Page.getAttribute("rc_entitylist").getText();
var sgrid = "searchResults";
var fetchXml = '<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">'+
'<entity name="' + entityname + '">'+
'<all-attributes />' +
'<filter type="and">'+
'<filter type="or">';

    var textBoxLines = document.getElementById("rc_searchcriteria").innerText;
    var attributename = Xrm.Page.getAttribute("rc_attributelist").getText();
    var lines = textBoxLines.split(/\n/);
    for(var i=0;i < lines.length; i++){
    fetchXml = fetchXml + '<condition attribute="' + attributename + '" operator="eq" value="'+ lines[i] +'" />';
    }

  fetchXml = fetchXml + '</filter>'+
'</filter>'+
'</entity>'+
'</fetch>';
 updateXml(sgrid, fetchXml, entityname);
 }

 function updateXml(grid, xmlfield, entityname) {   
try {      
    var g = document.getElementById(grid).control;
    g.setParameter("fetchXml", xmlfield);
} catch (e) { }   
// Refresh the grid      
document.getElementById(grid).control.refresh();   
}

1 个答案:

答案 0 :(得分:2)

您是否考虑过向表单添加多个子网格,并根据选项集的on-change事件隐藏/显示它们?

相关问题