любой простой способ проверить, не было ли выбрано ни одного элемента в элементе управления checkboxlist? - PullRequest
1 голос
/ 01 сентября 2011

Я знаю, что могу перебрать checkboxlist.Items и посмотреть, не выбран ли ни один из них, но есть ли лучший способ узнать, не было ли выбрано ни одного элемента, в коде позади?

Ответы [ 3 ]

6 голосов
/ 01 сентября 2011

Вы должны проверить SelectedIndex.Если он равен -1, это означает, что ничего не выбрано.

 CheckBoxList list = new CheckBoxList();
 if (list.SelectedIndex == -1)
 {
      //Nothing is selected
 }
1 голос
/ 01 сентября 2011

CheckBoxList имеет свойства для SelectedIndex и SelectedValue .

Вы можете проверить, есть ли SelectedIndex;это будет -1, если никакие пункты не проверены.

0 голосов
/ 01 сентября 2011

Это, вероятно, самый простой способ проверки 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;
     }
   }
}
...