我正在尝试在Dynamics CRM 2015中的联系人实体的表单上创建一个子网格,该表单将返回所有电子邮件,任务,约会和电话活动,其中该活动与已加载表单的联系人有关,或者该联系人是“活动”的参与者(即,电子邮件的“发件人”或“收件人/抄送/密件抄送”字段,或约会的参与者列表中的参与者)。

我已经在我的联系表单中添加了一个新的子网格(现在称为“ 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='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 type='and'>"
+        "<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 type='and'>"
+          "<condition attribute='participationtypemask' operator='in'>"
+            "<value>4</value>"
+            "<value>3</value>"
+            "<value>11</value>"
+            "<value>6</value>"
+            "<value>7</value>"
+            "<value>9</value>"
+            "<value>8</value>"
+            "<value>5</value>"
+            "<value>10</value>"
+            "<value>1</value>"
+            "<value>2</value>"
+          "</condition>"
+          "<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();

}





希望以上所述有意义,我将返回与在已设置的子网格中使用的“活动视图”的属性匹配的属性,然后过滤所需的活动类型,以及活动方在页面,适用于所有参与类型(我想这可能是不必要的,但是我的FetchXML是从“高级查找”查询中构建的,因此它明确包含了这些值,因为我选择了所有值)。

这似乎很好用,因为当页面加载时,我在子网格中看到了正确的“活动”列表,但是,如果我单击列表中任何“活动”的“主题”值,则会进入“新”表单活动,而不是链接到列出的活动。因此,例如,如果返回了我的子网格列表中的电子邮件,则当我单击子网格中该活动的“主题”列中的值时,它将加载“新电子邮件”表单,而不是像我一样将我带到该特定的电子邮件活动记录会期望的。

谁能告诉我为什么会这样以及我如何解决呢?


  (我还有一个额外的问题,有时
  导航到此联系表单,子网格并不总是刷新
  -即使我的javascript肯定正在运行-所以子网格
  没有显示活动记录。如果我之后手动刷新子网格
  页面加载,显示结果-我不明白为什么会这样
  无论发生什么。似乎是在离开联系表时
  然后在浏览器中使用“后退”返回,但我也有
  它发生在页面刷新上。抱歉,如果我不打算包括
  同一帖子中有两个问题,我显然可以发布此问题
  如果需要的话,请分开查看,但我认为值得一提
  与我尝试实现的功能完全相同。)

最佳答案

不用自己尝试..可能只是完全遗忘了要点..但是,您的提取中没有'Id'属性。.如果它在插件端,则检索到的记录中将没有记录ID。添加activitypointerid(或者是那个的activityid?)

09-20 12:51