javascript - 在 Dynamics 365 CRM 上使用 Xrm 对象将表单设置为只读

标签 javascript dynamics-crm microsoft-dynamics dynamics-crm-365 xrm

我正在 Microsoft Documentation 上阅读有关 Xrm 对象 的内容但我找不到具体的东西。

我需要限制一些创建或编辑门户评论(事件)的 Angular 色。因此,我不能简单地修改安全 Angular 色

我在编辑门户评论表单时看到有一个在页面加载时执行的 JavaScript 脚本:

Page load script

在编辑它时,它使用了很多这个 Xrm 对象。

在伪代码中我应该这样做

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

我已经有一个脚本(作为 Web 资源)来检查这样的 Angular 色,但我不知道如何将表单设置为“只读”或仅使用 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 代码中 - 检查当前用户的 security roles .

Xrm.Page.context.getUserRoles();

然后禁用 fields in bulk .

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

Dynamics 365 CRM 平台有 two forms即只读和禁用,当用户仅对该特定实体具有读取权限时加载前者,后者为非事件记录呈现。遗憾的是,我们不能强制加载任何这些表单。

关于javascript - 在 Dynamics 365 CRM 上使用 Xrm 对象将表单设置为只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51155818/

相关文章:

javascript - 使用 Freemarker 模板在 Angular 中转义引号

javascript - 如何在 RangeSlider 中为拖动 handle 赋予不同的颜色

dynamics-crm - 由于其托管属性的配置,您无法为此组件完成此操作

json - 以 JSON 格式查询 Microsoft Dynamics NAV 2013 Odata 服务

batch-processing - 如何通过代码获取作业流程中的BatchJob Recid?

PHP 函数不适用于 javascript

header 重定向后,javascript 警告框未显示在 php 上

c# - 通过客户端实体上的 "Client Status"字段设置权限

javascript - Dynamics CRM Web api 8.2 不会在 JavaScript 调用中检索页面 cookie

axapta - View 上的表单数据源编辑方法 - AX 2009