代码之家  ›  专栏  ›  技术社区  ›  Tim Schmelter

“选定项目的最大计数”-列表框的验证器

  •  1
  • Tim Schmelter  · 技术社区  · 15 年前

    我问自己是否有一个简单的方法来检查列表框是否有最多5个选中的项目。必须至少选择一个且最多选择5个项目。

    我需要一个带有服务器端验证的CustomValidator吗?

    多谢提前。。。

    1 回复  |  直到 15 年前
        1
  •  2
  •   mellamokb Dan    15 年前

    您可以使用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包含在其他容器控件中,则可能需要更多的工作来引用服务器端和客户端的控件。例如,如果它包含在名为FormView1的FormView控件中,则可以使用

    ListBox MyListBox = (ListBox)FormView1.FindControl("MyListBox");
    
    推荐文章