“所选项目的最大数量” - ListBox的值

时间:2010-11-15 17:19:52

标签: .net asp.net validation listbox

我问自己是否有一种简单的方法来检查ListBox是否最多包含5个选定项目。必须至少选择一项,最多5项。

我是否需要具有服务器端验证的CustomValidator?

非常感谢...

1 个答案:

答案 0 :(得分:2)

您可以使用CustomValidator例程执行此操作。

<asp:CustomValidator ID="ListBox5ItemsValidator" runat="server"
    OnServerValidate="ListBox5ItemsValidator_ServerValidate"
    ClientValidationFunction="ListBox5ItemsValidator_ClientValidate"
    ControlToValidate="MyListBox">
</asp:CustomValidator>

服务器端代码:

protected void ListBox5ItemsValidator_ServerValidate(
        object source, ServerValidateEventArgs args) {

    int selectionCount = 0;
    foreach (ListItem item in MyListBox.Items) {
        if (item.Selected) selectionCount++;
    }
    args.IsValid = (selectionCount >= 1 && selectionCount <= 5);
}

客户端代码:

function ListBox5ItemsValidator_ClientValidate(sender, args) {
    var selectionCount = $('#<% =MyListBox.ClientID %> option:selected').length;
    args.IsValid = (selectionCount >= 1 && selectionCount <= 5);
};

将MyListBox替换为要验证的ListBox的实际名称。如果ListBox包含在其他容器控件中,则可能需要更多工作来在服务器和客户端引用该控件。例如,如果它包含在名为FormView1的FormView控件中,则使用

ListBox MyListBox = (ListBox)FormView1.FindControl("MyListBox");