如何在 Dynamics CRM 2016 中禁用基于表单的功能区按钮?
How to disable ribbon button based on Form in Dynamics CRM 2016?
在这种情况下,我有两个带有功能区批准顶部的表单(信息和经理)。此按钮仅 enabled/view 在管理器表单中。
我已经关注了这个tutorial。我已经添加了 javascript 片段,我将其设置为我的功能区按钮启用规则。这是我的代码示例:
function EnableDisableRibbon_ApproveTop() {
try {
var formLabel;
var currForm = Xrm.Page.ui.formSelector.getCurrentItem();
formLabel = currForm.getLabel();
if (formLabel == "Manager") {
return true;
}
else {
return false;
}
} catch (e) {
alert("EnableDisableRibbon_ApproveTop : " + e.message);
}
}
当我打开该表单时出现此错误:
EnableDisableRibbon_ApproveTop : Cannot read property 'getCurrentItem' of null
EnableDisableRibbon_ApproveTop : Cannot read property 'getLabel' of null
1.You 在尝试访问子 properties/methods 之前必须添加空检查,如下所示:
function EnableDisableRibbon_ApproveTop() {
try {
var formLabel;
var selector = Xrm.Page.ui.formSelector;
if(selector != null){
var currForm = selector.getCurrentItem();
if(currForm != null){
formLabel = currForm.getLabel();
if (formLabel == "Manager") {
return true;
}
else {
return false;
}
}
}
} catch (e) {
alert("EnableDisableRibbon_ApproveTop : " + e.message);
}
}
2.Make 确保用户可以通过安全角色访问这两个表单,否则 Xrm.Page.ui.formSelector
returns 单个默认表单为空。 read more
3.Check遗留渲染的turbo形式设置,如果能帮助您解决这个错误
4.If 控件延迟加载 - 尝试使用 setTimeout
方法重试代码片段以再次调用 EnableDisableRibbon_ApproveTop()
方法
更新:
您提到的 blogpost 是另一种解决方法,通过从每个表单脚本设置全局 formName
变量而不是 formSelector
。这是通过 Enablerule 函数 RibbonButtonEnable
.
中的重载 set_formname()
函数完成的
在这种情况下,我有两个带有功能区批准顶部的表单(信息和经理)。此按钮仅 enabled/view 在管理器表单中。
我已经关注了这个tutorial。我已经添加了 javascript 片段,我将其设置为我的功能区按钮启用规则。这是我的代码示例:
function EnableDisableRibbon_ApproveTop() {
try {
var formLabel;
var currForm = Xrm.Page.ui.formSelector.getCurrentItem();
formLabel = currForm.getLabel();
if (formLabel == "Manager") {
return true;
}
else {
return false;
}
} catch (e) {
alert("EnableDisableRibbon_ApproveTop : " + e.message);
}
}
当我打开该表单时出现此错误:
EnableDisableRibbon_ApproveTop : Cannot read property 'getCurrentItem' of null
EnableDisableRibbon_ApproveTop : Cannot read property 'getLabel' of null
1.You 在尝试访问子 properties/methods 之前必须添加空检查,如下所示:
function EnableDisableRibbon_ApproveTop() {
try {
var formLabel;
var selector = Xrm.Page.ui.formSelector;
if(selector != null){
var currForm = selector.getCurrentItem();
if(currForm != null){
formLabel = currForm.getLabel();
if (formLabel == "Manager") {
return true;
}
else {
return false;
}
}
}
} catch (e) {
alert("EnableDisableRibbon_ApproveTop : " + e.message);
}
}
2.Make 确保用户可以通过安全角色访问这两个表单,否则 Xrm.Page.ui.formSelector
returns 单个默认表单为空。 read more
3.Check遗留渲染的turbo形式设置,如果能帮助您解决这个错误
4.If 控件延迟加载 - 尝试使用 setTimeout
方法重试代码片段以再次调用 EnableDisableRibbon_ApproveTop()
方法
更新:
您提到的 blogpost 是另一种解决方法,通过从每个表单脚本设置全局 formName
变量而不是 formSelector
。这是通过 Enablerule 函数 RibbonButtonEnable
.
set_formname()
函数完成的