サブグリッドの 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();
}