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