【问题标题】:Get all business recommended fields in subgrid获取子网格中的所有业务推荐字段
【发布时间】:2019-10-21 07:55:09
【问题描述】:

如何检查子网格的特定字段或列是否是企业推荐的?我想使用网络资源来做到这一点。同样由于某些要求,我将不得不使用子网格所在表单的执行上下文,而不是子网格本身的执行上下文。

【问题讨论】:

  • 不清楚 - 找到子网格记录必填字段后您要做什么?
  • 请查看“How to Ask”以及链接页面和“mcve”。

标签: dynamics-crm microsoft-dynamics subgrid webresource


【解决方案1】:

这有点棘手,因为在表单加载时,子网格没有数据。所以你必须使用表单的load 事件将load 事件附加到子网格。

这在MS Docs Page 中有描述。你可以这样做

function attachGridEvent(executionContext)
{
  var formContext = executionContext.getFormContext();
  var gridContext = formContext.getControl("gridCategories");

  // We have the grid, now add a "load" event handler
  gridContext.addOnLoad(MyGridLoadedEvent);
}

现在您的网格有了一个“加载”事件,因此您可以遍历其行并检查其数据

我无法让它适用于不包含数据的子网格

我得到子网格中的第一个row。一旦我有了,我们就可以遍历每一行的attributes。每个属性都有以下方法:

getName 返回所选网格属性的逻辑名称 排。

getRequiredLevel 返回一个字符串值,指示是否 该属性的值是必需的或建议的。

setRequiredLevel 设置数据是必需的还是推荐的 在保存记录之前选择网格行的属性。

getValue 检索属性的数据值。

setValue 设置 属性的数据值。

MS Docs Page

我正在使用一些现代浏览器功能(map=>),但这段代码应该适合你

function MyGridLoadedEvent(evt)
{
  var gridContext = evt.getEventSource();
  var rows = gridContext.getGrid().getRows();

  if (rows.getLength() > 0)
  {
    let rowAttributes = rows.getByIndex(0).getAttribute();
    let mappedResults = rowAttributes.map(x => x.getName() + " : " + x.getRequiredLevel());

    alert(mappedResults);
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 2010-09-09
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    相关资源
    最近更新 更多