我想在所需的表单上制作一个“部分”。基本上这些部分有复选框。用户应该检查至少一个。怎么办呢?
答案 0 :(得分:2)
在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();
}
}
答案 1 :(得分:0)
Guido的回答是完全正确的,但我想提供一个不同的解决方案。您可以在onSave事件期间执行验证,而不是为您的复选框连接OnChangeEvents,它们执行与Guido相同的基本逻辑,除非将它们标记为不需要或不需要:
Xrm.Page.getAttribute(controlName).setRequiredLevel("required");
Xrm.Page.getAttribute(controlName).setRequiredLevel("none");
例如,假设你有CheckBoxes 1,2和&amp; 3,默认情况下,它们被标记为必需。
当用户选中复选框时,请将其标记为必需,并将未选中的其他复选框标记为不需要。如果用户取消选中所有内容,请根据需要将其全部标记。
在代码中执行此操作更加困难,但提供了更好的用户体验,因为他们可以在更新表单之前查看所需内容,并且您不必担心更改OnSave默认行为。