繁体   English   中英

在Dynamics 365 CRM上使用Xrm Object将表单设置为只读

[英]Set form read only using Xrm Object on Dynamics 365 CRM

我在Microsoft文档上阅读有关Xrm对象的 信息,但是找不到具体的东西。

我需要限制创建或编辑门户网站注释活动类型)的某些角色。 因此,我不能只是简单地修改安全角色

我在编辑门户网站注释表单时看到,有一个JavaScript脚本可以在页面加载时执行:

页面加载脚本

编辑此对象时,它会Xrm大量Xrm对象。

用伪代码我应该做

if(ActiveUser.hasRoles(["Some role", "Some other role"]) {
    Page.setReadOnly(true);
}

我已经有一个脚本(作为网络资源)来检查这样的角色,但是我不知道如何将表单设置为“只读”或仅使用Xrm进行设置。 任何线索如何在这里实现?

编辑1:

我可以通过使用以下代码来做到这一点:

// Ribbon "Save" button
document.querySelector('#crmRibbonManager').style.display = "none";
// Status "Save" button
document.querySelector('#savefooter_statuscontrol').style.display = "none";
Xrm.Page.ui.controls.get().forEach(function (control) {          
    if(!control.getDisabled()) {
        control.setDisabled(true);
    }
});

当然,由于文档尚未加载,我会收到页面加载错误 但是我很确定我可以使用一些Xrm技术来禁用这些属性,我必须研究一下。

您步入正轨。 就像您说的那样,创建/修改js库Web资源并在加载表单时注册,而不是编辑现有的OOB adx表单脚本js文件。 在您的js代码中-检查当前用户的安全角色

Xrm.Page.context.getUserRoles();

然后批量禁用这些字段

Xrm.Page.getControl("myfield").setDisabled(true);

Dynamics 365 CRM平台有两种形式,即只读和禁用,前一种是在用户仅具有特定实体的读取特权时加载的,后者是为非活动记录呈现的。 不幸的是,我们不能强迫加载任何这些形式。

补充阿伦的答案;

这种类型的东西不受支持; document.querySelector('#crmRibbonManager')

Microsoft Dynamics 365和保持支持的重要性

必须使用Xrm.Page和Xrm.Utility命名空间中定义的功能来执行应用程序页面内的所有JavaScript交互,即,不要直接与页面DOM交互。

如果要控制功能区行为,则应该自定义命令和功能区 ,您将需要添加启用/显示规则。 丝带工作台是一个很好的工具。

最后,仅控制客户端验证毫无用处。 如果您想要用户无法避免的服务器端规则,则应考虑实施插件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM