【问题标题】:MAking a section on CRM 2011 form required需要在 CRM 2011 表单上创建一个部分
【发布时间】:2014-06-25 20:22:22
【问题描述】:

我想在所需表格上创建一个“部分”。基本上这些部分都有复选框。用户应该至少检查一个。如何做到这一点?

【问题讨论】:

  • 您不能在所需表格上创建“部分”。如果您想在Section 中检查至少一个Checkbox。您必须在其中进行一些分组

标签: javascript dynamics-crm-2011 customization


【解决方案1】:

在您的OnSave 事件中,您需要检查是否至少选中了一个复选框,如果未选中所有复选框,您可以停止保存事件。

要停止保存事件,您需要将上下文传递给 onsave 事件:

函数如下所示:

function onSave(executionObj)
{
// stop the save event
executionObj.getEventArgs().preventDefault();
}

检查值有几种方法,最简单的一种是保留它们的数组:

function onSave(executionObj)
{
   var canSave = false;
   var fields = ["new_checkbox1", "new_checkbox2", "new_checkbox3"];
   for (index = 0; index < fields.length; index++)
   {
      var checkboxValue = Xrm.Page.getAttribute(fields[index]).getValue();
      if (checkboxValue == true)
      {
         canSave = true;
         break;
      }
   }
   if (canSave == false)
   {
      alert("At least one checkbox must be selected!");
      executionObj.getEventArgs().preventDefault();
   }
}

【讨论】:

  • 您可以使用 Xrm.Page.ui (SDK link) 的 section 属性获取 section 中的所有控件,无需硬编码即可获得 section 中的所有控件
  • true,但是我写了有几种获取值的方法,您还可以检查控件是否是两个选项字段以排除该部分内的复选框以外的其他字段,但不知道完整要求,字段数组是最简单的
【解决方案2】:

Guido 的回答完全正确,但我想提供一个不同的解决方案。除了在 onSave 事件期间执行验证,您可以为您的复选框连接 OnChangeEvents,它们执行与 Guido 相同的基本逻辑,除了将它们标记为不需要或需要:

Xrm.Page.getAttribute(controlName).setRequiredLevel("required");
Xrm.Page.getAttribute(controlName).setRequiredLevel("none");

例如,假设您有复选框 1、2 和 3,并且默认情况下,它们被标记为必需。

当用户选中一个复选框时,将其标记为必填,并将未选中的其他复选框标记为不需要。如果用户全部取消选中,则将它们全部标记为必填。

在代码中这样做比较困难,但可以提供更好的用户体验,因为他们可以在更新表单之前看到需要什么,而且您不必担心更改 OnSave 默认行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 2011-09-02
    • 2013-06-03
    • 2013-02-12
    相关资源
    最近更新 更多