作为 JScript 新手,我对 MS CRM 2011 中的子网格有疑问。
我有一个带有子网格的表单,在该表单的 OnSave 中,我想遍历子网格中的所有行。
我怎样才能用 JScript 做到这一点?或者是否有可能以另一种方式,例如插件?
谢谢
作为 JScript 新手,我对 MS CRM 2011 中的子网格有疑问。
我有一个带有子网格的表单,在该表单的 OnSave 中,我想遍历子网格中的所有行。
我怎样才能用 JScript 做到这一点?或者是否有可能以另一种方式,例如插件?
谢谢
这是您可以在保存表单时执行的示例代码
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);
使用 Rest 调用并检索相应的记录:S
您可以通过执行以下操作检查保存时的子网格值:
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
}
你可以这样做:
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,并且您正在查看所有查找(位于子网格中),您还可以添加一些字段以从中选择更多信息.