2

我有一个包含 2 个表单的实体,我想根据两个选项字段的值来防止这 2 个表单之间的导航。换句话说,如果需要预评分的值是 yes,navigation is not possible 并且相反,我该怎么做?

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

谢谢,

在此处输入图像描述

4

3 回答 3

2

不,您不能动态更改用户可以选择的表单。这只能基于安全角色静态完成。

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

于 2017-09-13T15:32:18.797 回答
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;
            }
        }

    }
于 2017-09-13T16:37:37.080 回答
-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);
        });
},
于 2017-09-14T12:39:01.247 回答