0

サブグリッドの FetchXml を変更する方法を知っています。JS を使用したオプションセットからの選択に基づいて、サブグリッドを動的に変更しようとしています。オプションセットに基づいて、サブグリッドは異なるエンティティを (同時にではなく) 表示できる必要があります。
例: サブグリッドは現在、特定の関係タイプの取引先を表示しています。オプションセットが変更され、サブグリッドに John という名前のリードが表示されるようになりました。

私が受け取っているエラーは、「FetchXml で指定されたエンティティ名が EntityExpression のエンティティ名と一致しません」です。

以下のフェッチをグリッドにフィードします。単なる多値検索です。rc_entitylist には、システム内のすべてのエンティティが含まれています。rc_attributelist には、選択したエンティティのすべてのフィールドが含まれています。ユーザーはエンティティを選択し、検索するフィールドを選択し、検索基準 (1 行に 1 つの値) を入力すると、それに応じてサブグリッドに入力されます。

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();   
}
4

1 に答える 1

2

フォームに複数のサブグリッドを追加し、オプションセットの変更時イベントに基づいて非表示/表示することを考えましたか?

于 2013-04-16T12:37:26.037 に答える