Dynamics crm 2011 创建记录时设置子网格

Dynamics crm 2011 创建记录时设置子网格,dynamics-crm-2011,dynamics-crm,Dynamics Crm 2011,Dynamics Crm,我在事件表单中添加了一个子网格,它显示了具有相同事件分类的知识库文章 当我打开一个现有事件时,它工作得很好,但是当创建一个新事件时,它不工作 子网格中的“要启用此内容,请保存记录” 当记录相关时,我期望出现这种行为,但是我正在执行查询并设置子网格 因此,我的要求是在保存事件之前,在创建事件时启用并能够设置子网格 更重要的是,当由于插件停止保存记录而导致保存失败时,子网格在更改分类时会按预期工作,而不是保存事件 function Form_OnLoad() { ... if (form

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

当我打开一个现有事件时,它工作得很好,但是当创建一个新事件时,它不工作

子网格中的“要启用此内容,请保存记录”

当记录相关时,我期望出现这种行为,但是我正在执行查询并设置子网格

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

更重要的是,当由于插件停止保存记录而导致保存失败时,子网格在更改分类时会按预期工作,而不是保存事件

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();
Form_OnLoad()函数{
...
如果(formType==“1”){…}
其他的
{
//检查是否有与案件主题相同的物品
检查文章();
}
函数检查_articles()
{
var KBArtGrid=document.getElementById('grid\u kb\u articles');
如果(KBArtGrid==null){//请确保已加载网格
setTimeout(函数(){check_articles();},500);//如果网格尚未加载,请在加载后再次运行此函数
回来
}
var classificationValue=新数组();
classificationValue=Xrm.Page.getAttribute(“subjectid”).getValue();
if(classificationValue!=null&&classificationValue[0]!=null){
var fetchXml=“”+
"  " +
"    " +
"    " +
"    " +
"    " +
"    " +
"    " +
"      " +
"    " +
"    " +
"    ";
KBArtGrid.control.SetParameter(“fetchXml”,fetchXml);
KBArtGrid.control.Refresh();

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

导致失败的原因是,在保存事件之前尚未创建事件的GUID,因此KB项目没有具有该关系的GUID


您可以在保存事件之前预先保存事件,并将GUID传递给KB以存储它。或者使用上述映射。这样,您可能还需要将引用数据存储在KB中。

问题是“我想在创建新事件时启用子网格”?回答是“您不能使用支持的自定义设置。”也许有一种方法不受支持,但请在你的问题中解释你的要求:)你可以使用html web资源列出KB文章。我想把它放在子网格中,我看不到它的网页设计。正如@GuidoPreite所说。子网格就是这样工作的。是的,这是真的,我想我知道网格是如何工作的,只是假设这样显示两个实体之间的关系,所以在我不保存之前,记录不能显示任何内容,但是当我尝试保存时,我可以获取子网格并查看子网格上的行,并且我得到一个插件异常,因此记录没有保存,所以这就是为什么我认为有一个FormType的内部CRM检查,或者一些类似的检查。仍然没有找到一种方法来做到这一点t首字母..黑客?