需要编写有关CRM 2011表单的部分

时间:2014-06-25 20:22:23

标签: javascript dynamics-crm-2011 customization

我想在所需的表单上制作一个“部分”。基本上这些部分有复选框。用户应该检查至少一个。怎么办呢?

2 个答案:

答案 0 :(得分:2)

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

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

Pass execution context

该功能如下:

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();
   }
}

答案 1 :(得分:0)

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

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

例如,假设你有CheckBoxes 1,2和&amp; 3,默认情况下,它们被标记为必需。

当用户选中复选框时,请将其标记为必需,并将未选中的其他复选框标记为不需要。如果用户取消选中所有内容,请根据需要将其全部标记。

在代码中执行此操作更加困难,但提供了更好的用户体验,因为他们可以在更新表单之前查看所需内容,并且您不必担心更改OnSave默认行为。