Dynamics crm 使用JScript检索crm2011子网格中的行

Dynamics crm 使用JScript检索crm2011子网格中的行,dynamics-crm,javascript,dynamics-crm-2011,Dynamics Crm,Javascript,Dynamics Crm 2011,作为一名JScript新手,我对MS CRM 2011中的子网格有一个问题 我有一个带有子网格的表单,在该表单的另一端,我想循环子网格中的所有行 如何使用JScript实现这一点?或者它可能是另一种方式,ex-plugin Thx您可以通过执行以下操作在保存时检查子网格值: var gridControl = document.getElementById('subgrid_id').control; var ids = gridControl.get_allRecordIds(); for(i

作为一名JScript新手,我对MS CRM 2011中的子网格有一个问题

我有一个带有子网格的表单,在该表单的另一端,我想循环子网格中的所有行

如何使用JScript实现这一点?或者它可能是另一种方式,ex-plugin


Thx

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

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
}

下面是保存表单时可以执行的示例代码

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);
var gridControl=document.getElementById('grdrelatedcontacts').control;
对于(var intRowNumber=0;intRowNumber
使用Rest调用并检索相应的记录:S

您可以执行以下操作:

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();
var-req=new-XMLHttpRequest();
请求打开(“GET”,Xrm.Page.context.getClientUrl()+”/api/data/v8.0/pws_StreedAndHouseNodeatas?$filter=\u pws_streetandhousenumberid_value eq“+Xrm.Page.data.entity.getId(),true);
请求setRequestHeader(“OData MaxVersion”,“4.0”);
请求setRequestHeader(“OData版本”、“4.0”);
请求setRequestHeader(“接受”、“应用程序/json”);
setRequestHeader(“内容类型”,“应用程序/json;字符集=utf-8”);
req.setRequestHeader(“首选”、“odata.include注释=\”*\”);
req.onreadystatechange=函数(){
if(this.readyState==4){
req.onreadystatechange=null;
如果(this.status==200){
var results=JSON.parse(this.response);
对于(var i=0;i

在本例中,Xrm.Page.data.entity.getId()获取您当前的记录id,并且您正在查找所有查找(位于子网格中),您还可以添加一些字段以从中选择更多信息。

如何知道id是“grdrelatedcontacts”?ie从何处获取网格id???grdrelatedContact是您在表单自定义中可以找到的网格名称,只需单击网格,您将找到网格的名称。它将仅返回第一页中记录的id,对吗。。?那么子网格下一页中记录的ID呢?这只返回第一页,这正是OP想要得到的
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();