【问题标题】:any easy way to check if no items has been selected in a checkboxlist control?检查复选框列表控件中是否未选择任何项目的任何简单方法?
【发布时间】:2011-09-01 14:42:08
【问题描述】:

我知道我可以遍历 checkboxlist.Items 并查看是否没有选择任何项目,但是在后面的代码中是否有更好的方法来确定是否没有选择任何项目?

【问题讨论】:

标签: asp.net c#-2.0 checkboxlist


【解决方案1】:

您必须检查 SelectedIndex。如果它等于-1,则表示没有选择任何内容。

 CheckBoxList list = new CheckBoxList();
 if (list.SelectedIndex == -1)
 {
      //Nothing is selected
 }

【讨论】:

    【解决方案2】:

    CheckBoxList 具有 SelectedIndexSelectedValue 的属性。

    可以检查是否有SelectedIndex;如果没有检查任何项目,则为 -1。

    【讨论】:

      【解决方案3】:

      这可能是验证 CheckBoxList 的最简单方法:

      使用自定义验证器:

      <asp:CustomValidator runat="server" ID="cvmodulelist" ClientValidationFunction="ValidateModuleList" ErrorMessage="Please Select Atleast one Module"></asp:CustomValidator>
      

      创建一个 JavaScript 函数来验证 CheckBoxList:

      // javascript to add to your aspx page
      function ValidateModuleList(source, args)
      {
        var chkListModules= document.getElementById ('<%= chkModuleList.ClientID %>');
        var chkListinputs = chkListModules.getElementsByTagName("input");
        for (var i=0;i<chkListinputs .length;i++)
        {
          if (chkListinputs [i].checked)
          {
            args.IsValid = true;
            return;
          }
        }
        args.IsValid = false;
      }
      

      另一种选择是创建自定义验证控件,如下所示:

      using System;
      using System.Web.UI;
      using System.Web.UI.WebControls;
      using System.ComponentModel;
      
      namespace CustomValidators
      {
        public class RequiredFieldValidatorForCheckBoxLists : System.Web.UI.WebControls.BaseValidator 
        {
           private ListControl _listctrl;
      
           public RequiredFieldValidatorForCheckBoxLists()
           {
             base.EnableClientScript = false;
           }
      
           protected override bool ControlPropertiesValid()
           {
             Control ctrl = FindControl(ControlToValidate);
      
             if (ctrl != null) 
             {
               _listctrl = (ListControl) ctrl;
               return (_listctrl != null);   
             }
             else 
               return false;  // raise exception
           }
      
           protected override bool EvaluateIsValid()
           {     
             return _listctrl.SelectedIndex != -1;
           }
         }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-24
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        • 2013-03-17
        • 2021-05-07
        • 1970-01-01
        • 2018-09-23
        相关资源
        最近更新 更多