我有一个包含 2 个表单的实体,我想根据两个选项字段的值来防止这 2 个表单之间的导航。换句话说,如果需要预评分的值是 yes,navigation is not possible 并且相反,我该怎么做?
是否可以简单地隐藏列表?
谢谢,
我有一个包含 2 个表单的实体,我想根据两个选项字段的值来防止这 2 个表单之间的导航。换句话说,如果需要预评分的值是 yes,navigation is not possible 并且相反,我该怎么做?
是否可以简单地隐藏列表?
谢谢,
不,您不能动态更改用户可以选择的表单。这只能基于安全角色静态完成。
相反,我建议使用单个表单,根据需要处理字段的值隐藏和显示相关字段/部分/选项卡。
您可以根据您的项目复杂性决定表单控件/选项卡/部分的数量。我们做了这样的事情来维护和基于表单控件值的强制导航。
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;
}
}
}
由于它不受支持,我使用了另一种解决方案,即检查布尔值是否为真和名称,如果用户尝试更改表单,他将被重定向到正确的表单,直到他更改布尔值。
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);
});
},