SetRequiredLevel 它是如何工作的?

SetRequiredLevel How it works?

我有两个字段:Cobertura 和其他 3 个(我们称之为 x、y、z)如果 cobertura 值为 150 或 160,我需要将其他 3 个字段设置为必填字段,并且在填写这些字段之前不允许保存,在 CRM 11 中使用 java 脚本。 使用设置所需级别对我有用吗?这个功能具体是做什么的?

是的,setRequiredLevel 函数适用于您的情况。该函数更改字段的要求级别(可能的值为nonerecommendedrequired

您需要检查 OnLoadOnChange 事件中的 Cobertura 值:

var cobertura = Xrm.Page.getAttribute("cobertura").getValue();
if (cobertura == 150 || cobertura == 160) {
   Xrm.Page.getAttribute("x").setRequiredLevel("required");
   Xrm.Page.getAttribute("y").setRequiredLevel("required");
   Xrm.Page.getAttribute("z").setRequiredLevel("required");
} else {
   Xrm.Page.getAttribute("x").setRequiredLevel("none");
   Xrm.Page.getAttribute("y").setRequiredLevel("none");
   Xrm.Page.getAttribute("z").setRequiredLevel("none");
}

函数 setRequiredLevel("required") 使数据属性 成为必需的 。显示属性的 Web 表单上每个控制字段的标签将在标签文本后附加一个星号 (*)。只要该属性为空,用户就无法保存表单上的数据。

和Guido刚重构的基本一样

  function coberturaSetRequired()
     {

        var cobertura = Xrm.Page.getAttribute("cobertura");
        var x = Xrm.Page.getAttribute("x");
        var y = Xrm.Page.getAttribute("y");
        var z = Xrm.Page.getAttribute("z");
        var isRequired = "none";

        if (!cobertura) return;

          if (cobertura.getValue() == 150 || cobertura.getValue() == 160)
          {
            isRequired = "required";
          }



        x.setRequiredLevel(isRequired);
        y.setRequiredLevel(isRequired);
        z.setRequiredLevel(isRequired);

    }