在表单头crm dynamics 365中隐藏表单选项卡

时间:2017-09-13 15:26:11

标签: dynamics-crm crm dynamics-crm-online dynamics-crm-365

我有一个包含2个表单的实体,我想根据两个选项字段的值阻止这两个表单之间的导航。换句话说,如果需要预测的值是肯定的,导航是不可能的,反之,我怎么能这样做?

是否可以简单地隐藏列表?

谢谢,

enter image description here

3 个答案:

答案 0 :(得分:2)

不,您无法动态更改用户可以选择的表单。这只能基于安全角色进行静态处理。

相反,我建议使用单个表单,根据需要处理字段的值隐藏并显示相关字段/部分/标签。

答案 1 :(得分:0)

您可以根据项目的复杂程度决定表单控件/标签/部分的数量。我们做了类似这样的事情以维持&基于表单控制值的强制导航。

    var taskFormOptionSet = {
        Form1: 1,
        Form2: 2,
    };

        var FormNames = {
            Form1: "Form1",
            Form2: "Form2",
        };

    var myform = Xrm.Page.getAttribute("need_Prescoring").getValue();
    var currentform = Xrm.Page.ui.formSelector.getCurrentItem();

    if (currentform != null) {
        var formId = currentform.getId();
        var formLabel = currentform.getLabel();
    }

    if (myform == taskFormOptionSet.Form1 && formLabel != FormNames.Form1) {
        var items = Xrm.Page.ui.formSelector.items.get();
        for (var i in items) {
            var form = items[i];
            var formId = form.getId();
            var formLabel = form.getLabel();

            if (formLabel == FormNames.Form1) {
                form.navigate();
                return;
            }
        }

    }

答案 2 :(得分:-1)

由于它不受支持,我使用另一个解决方案来检查布尔值是否为真,如果用户试图改变表格,他将被重定向到正确的形式,直到他改变布尔值

DiligenceSwitch: function(){
    if (Xrm.Page.ui.formSelector.getCurrentItem() != null) {
        var currentform = Xrm.Page.ui.formSelector.getCurrentItem();            
    }

    if (currentform != null) {
        var formId = currentform.getId();
        var formLabel = currentform.getLabel();
    }

    var kycId = Xrm.Page.data.entity.getId();        
    SDK.REST.retrieveRecord(kycId, "kyc_Kycdiligence", "kyc_Needprescoring", null,               //field for searching the targeted field, entity, targeted field, ...
        function (kyc) {
            if (kyc != null || kyc.kyc_Needprescoring != null) {
                if (formLabel != "Pre-Scoring" && kyc.kyc_Needprescoring == true) {     
                    var windowOptions = { openInNewWindow: false };
                    var parameters = {};
                    parameters["formid"] = "4B0C88A9-720C-4BFA-8F59-7C1D5DD84F02";
                    Xrm.Utility.openEntityForm("kyc_kycdiligence", kycId, parameters, windowOptions);
                    alert("Vous devez faire le pre-scoring");    
                }
            }   
        },
        function (error) {
            Xrm.Utility.alertDialog(error.message);
        });
},