![](/img/trans.png)
[英]Reload Form on reload/refresh of subgrid in Dynamics 365 CRM Unified Interface
[英]Microsoft Dynamics 365 Unified Interface - JavaScript
我的 D365 實例更新為統一接口,功能區命令后面的 JavaScript 壞了。 據我了解,需要替換 Xrm.Page 並將 PrimaryControl 添加為功能區工作台中的 Crm 參數。
我這樣做了,也更新了代碼,但出現錯誤:
TypeError:無法讀取未定義的屬性“getControl”
在 Object.OnSuccess在 Object.ChangeStatusMultiple
這是代碼:
Applikata.Commands =
{
ChangeStatus: function (id, entityName, status, state, successCallback,context) {
var formContext = context;
var entity = {};
var arrStatus = status.SourceControlId.split("|");
var _status = (state == 0) ? 100000000 : 100000002;
// status arraives in following form
// ac_grade | NoRelationship | Form | ac.ac_grade.Button17.Button
if (arrStatus.length == 4)
_status = arrStatus[arrStatus.length - 1].split(".")[2];
entity.statuscode = { Value: _status };
entity.statecode = { Value: state };
//console.log(status);
// ac_grade|OneToMany|SubGridAssociated|ac.ac_grade.100000008.GridButton
//console.log("ChangeStatus:" + id + " entityName:" + entityName + " status:" + status + " state:" + state);
//console.log("SDK.REST:" + SDK.REST);
SDK.REST.updateRecord(
id,
entity,
entityName,
successCallback,
function (error) {
alert(error.message);
}
);
},
ChangeStatusMultiple: function (selectedIds, entityName, status, state, gridName, context) {
var formContext = context;
selectedIds.forEach(
function (id) {
Applikata.Commands.ChangeStatus(id, entityName, status, state, function () {});
}
);
Applikata.Commands.OnSuccess(gridName);
},
OnSuccess: function (gridName,context) {
var formContext = context;
console.log('Control ' + gridName);
console.log('Name of grid' + formContext.getControl(gridName,primaryControl).getName());
// Xrm.Page.getControl(gridName).getName().refresh();
formContext.getControl(gridName,primaryControl).refresh();
}
};
我錯過了什么? 任何幫助,將不勝感激。
由於您希望將context
作為 function OnSuccess: function (gridName,context)
的第二個參數傳遞,因此您必須像這樣傳遞Applikata.Commands.OnSuccess(gridName, formContext);
從呼叫地點。
ChangeStatusMultiple: function (selectedIds, entityName, status, state, gridName, context) {
var formContext = context;
selectedIds.forEach(
function (id) {
Applikata.Commands.ChangeStatus(id, entityName, status, state, function () {});
}
);
Applikata.Commands.OnSuccess(gridName, formContext);
},
OnSuccess: function (gridName, context) {
var formContext = context;
console.log('Control ' + gridName);
console.log('Name of grid' + formContext.getControl(gridName,primaryControl).getName());
// Xrm.Page.getControl(gridName).getName().refresh();
formContext.getControl(gridName,primaryControl).refresh();
}
或者您也可以將 formContext 設置為全局變量,而不是初始化它並傳入每個 function。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.