创建记录时设置子网格

时间:2014-01-22 14:56:43

标签: dynamics-crm-2011 dynamics-crm

我在“事件”表单中添加了一个子网格,它显示了具有相同事件分类的知识库文章。

当我打开现有事件时,它运行良好,但在创建新事件时它不起作用。

在子网格中,“启用此内容,保存记录

我希望记录相关时会出现这种情况,但是我正在进行查询并设置子网格。

因此,我的要求是在保存事件之前启用并能够设置子网格。

更重要的是,当保存记录因为插件停止而失败时,子网格在分类发生变化时按预期工作,而不是保存事件。

function Form_OnLoad() {
   ...
   if (formType == "1") { ...}
   else
   {
      //Check if there is/are article(s) with the same subject of the case
      check_articles();
   }



function check_articles()
{
  var KBArtGrid = document.getElementById('grid_kb_articles');

if (KBArtGrid == null) { //make sure the grid has loaded 
    setTimeout(function () { check_articles(); }, 500); //if the grid hasn’t loaded run this again when it has 
    return;
}

var classificationValue = new Array();
classificationValue = Xrm.Page.getAttribute("subjectid").getValue();

if(classificationValue != null && classificationValue[0] != null) {

var fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
"  <entity name='kbarticle'>" +
"    <attribute name='number' />" +
"    <attribute name='title' />" +
"    <attribute name='statecode' />" +
"    <attribute name='kbarticletemplateid' />" +
"    <order attribute='number' descending='false' />" +
"    <filter type='and'>" +
"      <condition attribute='subjectidname' operator='like' value='" + '%' +classificationValue[0].name +'%'+ "' />" +
"    </filter>" +
"    </entity>" +
"    </fetch>";

KBArtGrid.control.SetParameter("fetchXml", fetchXml);
KBArtGrid.control.Refresh();

1 个答案:

答案 0 :(得分:0)

我没有尝试这个,但我认为你可以通过从两个实体都有一个自定义字段来映射字段来实际链接它。

导致失败的原因是因为在保存事件之前尚未创建事件的GUID,因此知识库文章没有GUID来建立关系。

您可以在保存事件之前预先保存事件,并将GUID传递给KB以进行存储。或者使用上面提到的映射。有了这个,您可能还需要以KB为单位存储引用数据。