我正在 Microsoft Documentation 上阅读有关 Xrm 对象 的内容但我找不到具体的东西。
我需要限制一些创建或编辑门户评论(事件)的 Angular 色。因此,我不能简单地修改安全 Angular 色。
我在编辑门户评论表单时看到有一个在页面加载时执行的 JavaScript 脚本:
在编辑它时,它使用了很多这个 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/