我在两个场景中使用相同的代码时遇到了问题:
从带状按钮调用revisionRequested的
G 211
下面的代码是我的工作,但我最初尝试的是将primaryControl param从revisionRequested传递给removeOptions,其中我生成了formContext = primaryControl,得到了一个错误。
function revisionRequested(primaryControl) {
var formContext = primaryControl;
formContext.getAttribute("statuscode").setValue(100000009); // Revision Requested
removeOptions(0, primaryControl);
Xrm.Navigation.openAlertDialog('Your revision request has been been submitted');
}
function removeOptions(executionContext, primaryControl) {
var formContext = null;
executionContext == 0 ? formContext = primaryControl : formContext = executionContext.getFormContext();
var statusCode = formContext.getAttribute("statuscode").getText();
var statusControl = formContext.getControl("header_statuscode");
if (Xrm.Page.ui.getFormType() !== 1 && statusCode.includes('Revision')) {
statusControl.removeOption(1);
statusControl.removeOption(100000000);
statusControl.removeOption(100000001);
statusControl.removeOption(100000002);
statusControl.removeOption(100000003);
statusControl.removeOption(100000003);
statusControl.removeOption(100000004);
statusControl.removeOption(100000005);
statusControl.removeOption(100000006);
statusControl.removeOption(100000007);
statusControl.removeOption(100000008);
}
}发布于 2020-09-18 01:47:45
我相信您想要的是JavaScript for removeOptions方法中的多态,一个带有executionContext签名的表单加载使用,另一个带有primaryControl签名要使用的丝带。当然,这两个签名并不相同,在注册事件处理程序时从表单传递执行上下文只能选择将其作为第一个参数发送。
您所做的是在两个不同的地方使用可重用方法的有效解决方法,同时考虑到所有的限制和平台设计。
Read this讨论,以获得更多的理解。
https://stackoverflow.com/questions/63946241
复制相似问题