直接上干货
高级查找页面的URL:
Xrm.Page.context.getClientUrl() + "/SFA/goal/ParticipatingQueryCondition.aspx?entitytypecode=" + 具体实体的entitytypecode
JS获取ObjectTypeCode
RetrieveMultiple("EntityDefinitions?$select=ObjectTypeCode&$filter=LogicalName eq '" + entityName + "'", false);
查询方法说明:
function RetrieveMultiple(query, asyn) {
/// <summary>
/// 多条查询
/// </summary>
/// <param name="query">查询字符串--string</param>
/// <param name="asyn">是否异步-- bool类型 true为异步 false 同步</param>
/// <returns>查询结果</returns>
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.0/" + query, asyn);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.send();
return JSON.parse(req.responseText);
}
获取高级查找的fetchXML:
Xrm.Page.getControl("iframe控件").getObject("advFind").contentWindow.$find("advFind").get_fetchXml();
加载保存的高级查找:
Xrm.Page.getControl(iframeControl).getObject("advFind").contentWindow.$find("advFind").set_fetchXml(fetchxml)
实例:
function loadFetchXml(iframeControl, fetchxmlAtt) {
if (Xrm.Page.getControl(iframeControl).getObject("advFind").contentWindow.$find != undefined &&
Xrm.Page.getControl(iframeControl).getObject("advFind").contentWindow.$find("advFind").set_fetchXml != undefined) {
var fetchxml = Xrm.Page.getAttribute(fetchxmlAtt).getValue();
Xrm.Page.getControl(iframeControl).getObject("advFind").contentWindow.$find("advFind").set_fetchXml(null);
Xrm.Page.getControl(iframeControl).getObject("advFind").contentWindow.$find("advFind").set_fetchXml(fetchxml);
}
else {
timerRun(iframeControl, fetchxmlAtt);
}
}
// 防止没有加载成功
function timerRun(iframeControl, fetchxmlAtt) {
setTimeout(function () {
loadFetchXml(iframeControl, fetchxmlAtt);
}, 1000);
}