我已在Dynamics CRM 2015中的联系实体的表单上创建了子网格,该表单返回所有电子邮件,任务,约会和电话呼叫活动,其中活动是关于已加载表单的联系人,或者其中联系人是活动的参与者(即在发件人或To / CC / BCC字段中发送电子邮件,或在约会的与会者列表中)。
我已经在我的联系表单中添加了一个新的子网格(现在称为“NewActivities”),该表格使用我创建的特定活动视图(并且设计的标准将“永不”返回任何结果 - DateCreated> = 01/01/2050)然后创建了一个javascript函数,我已将其作为Web资源包含在我的解决方案中并且正在调用Form的OnLoad事件:
function DisplaySubGrid() {
var subgrid = document.getElementById("NewActivities");
if (subgrid == null) {
setTimeout('DisplaySubGrid()', 1000);
return;
}
var fetchXml =
"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>"
+ "<entity name='activitypointer'>"
+ "<attribute name='activityid' />"
+ "<attribute name='activitytypecode' />"
+ "<attribute name='subject' />"
+ "<attribute name='statecode' />"
+ "<attribute name='regardingobjectid' />"
+ "<attribute name='ownerid' />"
+ "<attribute name='scheduledend' />"
+ "<attribute name='createdby' />"
+ "<attribute name='createdon' />"
+ "<order attribute='scheduledend' descending='false' />"
+ "<order attribute='subject' descending='false' />"
+ "<filter>"
+ "<condition attribute='activitytypecode' operator='in'>"
+ "<value>4201</value>"
+ "<value>4202</value>"
+ "<value>4210</value>"
+ "<value>4212</value>"
+ "</condition>"
+ "</filter>"
+ "<link-entity name='activityparty' from='activityid' to='activityid' alias='ae'>"
+ "<filter>"
+ "<condition attribute='partyid' operator='eq' uiname='" + Xrm.Page.getAttribute("fullname").getValue() + "' uitype='contact' value='" + Xrm.Page.data.entity.getId() + "' />"
+ "</filter>"
+ "</link-entity>"
+ "</entity>"
+ "</fetch>"
subgrid.control.SetParameter("fetchXml", fetchXml);
subgrid.control.refresh();
}
希望上面有意义,我返回的属性与我设置的子网格中使用的活动视图的属性相匹配,然后过滤我想要的活动类型以及活动方的位置联系页面。除了一个奇怪的行为外,这个工作正常。
问题在于,有时在导航到此联系表单时,子网格不会刷新 - 即使我的javascript(包括subgrid.control.refresh()
调用)肯定在运行 - 因此子网格没有显示活动记录。如果我在页面加载后手动刷新子网格(右键单击 - &gt;刷新列表),则会显示正确的结果 - 我不明白为什么会发生这种情况。这似乎是在远离联系表单导航,然后在我的浏览器中使用Back返回时,但我也在页面刷新时发生了这种情况。