0

作为 JScript 新手,我对 MS CRM 2011 中的子网格有疑问。

我有一个带有子网格的表单,在该表单的 OnSave 中,我想遍历子网格中的所有行。

我怎样才能用 JScript 做到这一点?或者是否有可能以另一种方式,例如插件?

谢谢

4

4 回答 4

1

这是您可以在保存表单时执行的示例代码

var gridControl = document.getElementById('grdrelatedcontacts').control;
for (var intRowNumber = 0; intRowNumber < gridControl.getRecordsFromInnerGrid().length; intRowNumber++)
    for (var intCellNumber = 0; intCellNumber < gridControl.getRecordsFromInnerGrid()[intRowNumber][3].cells.length; intCellNumber++)
        alert(gridControl.getRecordsFromInnerGrid()[intRowNumber][3].cells[intCellNumber].outerText);
于 2011-06-11T06:58:40.267 回答
0

使用 Rest 调用并检索相应的记录:S

于 2013-12-12T23:11:57.010 回答
0

您可以通过执行以下操作检查保存时的子网格值:

var gridControl = document.getElementById('subgrid_id').control;
var ids = gridControl.get_allRecordIds();
for(i = 0; i < ids.length; i++) {
    var cellValue = gridControl.getCellValue('column_name', ids[i]);
    // logic
}

在加载时执行此操作更具挑战性,因为子网格是异步加载的,并且在表单 onload 事件触发时不太可能完成加载。您可以通过在表单 onload 中调用如下函数来定期检查网格以查看它何时完成加载:

function subGridOnload() {
    var grid = document.getElementById('subgrid_id');
    if (grid.readyState!="complete") {
        // delay one second and try again.  
        setTimeout(subGridOnload, 1000);
        return;
    }

    // logic
}
于 2011-05-03T16:48:14.167 回答
0

你可以这样做:

var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.0/pws_streedandhousenodatas?$filter=_pws_streetandhousenumberid_value eq " + Xrm.Page.data.entity.getId(), true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.onreadystatechange = function() {
    if (this.readyState === 4) {
        req.onreadystatechange = null;
        if (this.status === 200) {
            var results = JSON.parse(this.response);
            for (var i = 0; i < results.value.length; i++) {
                var pws_streedandhousenodataid = results.value[i]["pws_streedandhousenodataid"];
            }
        } else {
            Xrm.Utility.alertDialog(this.statusText);
        }
    }
};
req.send();

在这种情况下, Xrm.Page.data.entity.getId() 会为您获取当前记录 ID,并且您正在查看所有查找(位于子网格中),您还可以添加一些字段以从中选择更多信息.

于 2018-08-21T17:57:54.380 回答