获取subgrid中所有业务推荐字段

Get all business recommended fields in subgrid

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

这有点棘手,因为在加载表单时,子网格没有数据。所以你必须使用表单的 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);
}

现在您的网格有一个 'load' 事件,因此您可以遍历它的行并检查它的数据

我没能让它在不包含数据的子网格上工作

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

getName Returns the logical name of the attribute of a selected grid row.

getRequiredLevel Returns a string value indicating whether a value for the attribute is required or recommended.

setRequiredLevel Sets whether data is required or recommended for the attribute of a selected grid row before the record can be saved.

getValue Retrieves the data value for an attribute.

setValue Sets the data value for an attribute.

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);
  }
}