将自定义FetchXML应用于子网格的实现似乎已从CRM 2011/13更改为Dynamics 365.此更改与GridControl.SetParameter()
相关。
我已经跟踪了很多关于同一问题的文章,但目前在Dynamics 365 Online上没有任何工作。 有没有其他方法可以实现相同的功能?
在我的下面的代码中,我正在尝试获取与该帐户相关的所有电话和电子邮件活动,并将其显示在帐户表单上的子网格中。
//Shows only the PhoneCall activities related to Organisation
//var allPhoneCallsGrid = window.parent.document.getElementById("AllPhoneCalls"); //Not supported by Microsoft
//var allPhoneCallsGrid = document.getElementById("AllPhoneCalls"); //Not Supported by Microsoft
var allPhoneCallsGrid = Xrm.Page.getControl("AllPhoneCallactivities"); //Sub-grid is on the Account Form
if (allPhoneCallsGrid == null) {
setTimeout(function() {
AccountForm.AccountFormOnLoad();
}, 2000); //if the grid hasn’t loaded run this again when it has
return;
}
var accountId = Xrm.Page.data.entity.getId();
var allPhoneCallsfetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
" <entity name='activitypointer'>" +
" <attribute name='activitytypecode' />" +
" <attribute name='subject' />" +
" <attribute name='ownerid' />" +
" <attribute name='prioritycode' />" +
" <attribute name='regardingobjectid' />" +
" <attribute name='activityid' />" +
" <attribute name='scheduledstart' />" +
" <attribute name='scheduledend' />" +
" <attribute name='statecode' /> " +
" <attribute name='community' /> " +
" <order attribute='modifiedon' descending='false' />" +
" <filter type='and'>" +
" <condition attribute='activitytypecode' operator='ne' value='4206' />" +
" <condition attribute='activitytypecode' operator='eq' value='4210' />" +
" </filter>" +
" <link-entity name='incident' from='incidentid' to='regardingobjectid' alias='ad'>" +
" <filter type='and'>" +
" <condition attribute='account' operator='eq' uitype='account' value='" + accountId + "' />" +
" </filter>" +
" </link-entity>" +
" </entity>" +
"</fetch>";
allPhoneCallsGrid.control.SetParameter("fetchXml", allPhoneCallsfetchXml); //Unable to get property 'SetParameter' of undefined or null reference
//allPhoneCallsGrid.getGrid().setParameter("fetchXml", allPhoneCallsfetchXml);
allPhoneCallsGrid.control.Refresh(); //refresh the sub grid using the new fetch xml
答案 0 :(得分:0)
使用Xrm页面对象,我们可以将JavaScript绑定到子网格的onload事件。
可以使用Ribbon Workbench工具将JavaScript绑定到子网格。
有关如何在子网格事件上编写JavaScript的示例代码,请参阅此链接 http://www.inogic.com/blog/2015/11/identify-the-trigger-for-an-on-load-event-for-sub-grid-in-dynamics-crm/
答案 1 :(得分:0)
Community thread建议不要使用这种不受支持的方法。建议使用RetrieveMultiple
术前插件来拦截呼叫并传递自定义fetchxml查询以实现结果。
答案 2 :(得分:0)
加载表单上的脚本:
var control = Xrm.Page.getControl("Your Subgrid control");
var grid = control.getGrid();
var fetchXml = "<fetch version='1.0' output-format='xml-platform'
mapping='logical' distinct='false'>...</fetch>" //Your fetch Xml
grid.setParameter("fetchXML", fetchXml);