簡體   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