任何简单的方法来检查checkboxlist控件中是否未选择任何项目?

问题描述:

我知道我可以通过checkboxlist.Items循环查看是否没有选中它们,但是有没有更好的方法来确定是否没有选择任何项目?任何简单的方法来检查checkboxlist控件中是否未选择任何项目?

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

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

这可能是验证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; 
    } 
    } 
} 

CheckBoxList具有属性的SelectedIndex的SelectedValue

您可以检查是否有SelectedIndex;如果没有项目被选中,它将是-1。