gpt4 book ai didi

javascript - 如何在 Dynamics CRM 2016 中禁用基于表单的功能区按钮?

转载 作者:行者123 更新时间:2023-12-03 02:41:45 24 4
gpt4 key购买 nike

在本例中,我有两个带有 Approve TOP 功能区的表单(信息和经理)。此按钮仅在管理器表单中启用/查看。

我已经关注了这个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.在尝试访问子属性/方法之前,您必须添加空检查,如下所示:

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.确保用户可以通过安全 Angular 色访问这两个表单,否则 Xrm.Page.ui.formSelector 对于单个默认表单返回 null。 read more

3.检查旧版渲染的turbo表单设置是否可以帮助您解决此错误

4.如果控件延迟加载 - 尝试使用 setTimeout 方法重试代码片段以再次调用 EnableDisableRibbon_ApproveTop() 方法

更新:
blogpost您提到的是另一种解决方法,通过从每个表单脚本设置全局 formName 变量而不是 formSelector 。这是通过 Enablerule 函数 RibbonButtonEnable 内重载的 set_formname() 函数来完成的。

关于javascript - 如何在 Dynamics CRM 2016 中禁用基于表单的功能区按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48299881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com