2013-03-06 4 views
6

У меня есть checkboxlist, и я хотел бы проверить, проверен ли хотя бы один флажок. Если ни один из них не установлен, я хочу показать предупреждающее сообщение, в котором говорится, пожалуйста, выберите хотя бы один элемент. Я хочу сделать это в коде, если это возможно. Я начал, но не знаю, правильно это или нет, но не смог его закончить.Проверьте, если выбран хотя бы один флажок.

public void alert() 
    { 
     foreach (ListItem listItem in cblCustomerList.Items) 
     { 
      if (!listItem.Selected) 
      { 
      } 
     } 
    } 

вот CheckBoxList в ASPX:

<asp:CheckBoxList ID="cblCustomerList" runat="server" DataSourceID="SqlDataSource1" CssClass="CheckBoxList" 
      DataTextField="GroupName" DataValueField="GroupName" 
       onclick="readCheckBoxList()" >    
      </asp:CheckBoxList> 

здесь кнопка:

<asp:Button ID="Button1" runat="server" CausesValidation="True" 
          CommandName="Insert" Text="Insert" OnClientClick="return Validate_Checkbox()" /> 

Спасибо за вашу помощь.

+1

Должно быть в JS, а не в коде позади –

+0

Лучше сделать этот вид проверки на стороне клиента с помощью JavaScript.Здесь ничего нет, что зависит от данных с сервера – codingbiz

+0

@both. На самом деле тривиально легко обойти проверку на стороне клиента. Совершенно разумно хотеть код за валидацией. – BinaryTox1n

ответ

6

Редактировать:

Вот один пример кода. его работы мне

Должен добавить этот файл сценария: <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
     function Validate_Checkbox() { 
      var chks = $("#<%= cblCustomerList.ClientID %> input:checkbox");   

      var hasChecked = false; 
      for (var i = 0; i < chks.length; i++) { 
       if (chks[i].checked) { 
        hasChecked = true; 
        break; 
       } 
      } 
      if (hasChecked == false) { 
       alert("Please select at least one checkbox..!"); 

       return false; 
      } 

      return true; 
     }  
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:CheckBoxList ID="cblCustomerList" runat="server" CssClass="CheckBoxList"> 
      <asp:ListItem Value="0">xx</asp:ListItem> 
      <asp:ListItem Value="1">yy</asp:ListItem> 
     </asp:CheckBoxList> 
     <asp:Button ID="xx" runat="server" OnClientClick="javascript:Validate_Checkbox();return true;" /> 
    </div> 
    </form> 
</body> 
</html> 

и изменить

<asp:CheckBoxList ID="cblCustomerList" runat="server" DataSourceID="SqlDataSource1" CssClass="CheckBoxList" DataTextField="GroupName" DataValueField="GroupName">    
      </asp:CheckBoxList> 

контроль вместо моего образца кода. и вызовите javascript function в кнопке control.look.

Chears !!!

Редактировать

добавьте этот файл сценария

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 

Вместо <script src="scripts/jquery-1.8.3.min.js" type="text/javascript"></script>

+0

prettifying your js code ... – naveen

+0

Мой идентификатор управления называется cblCustomerList, где вы называете это в javascript? вот мой checkboxlist в aspx: user1858332

+0

У меня есть новый отредактированный код выше .please проверьте новый код. его работа – 2013-03-06 16:04:33

3
// using System.Linq; 

// Considering that items are of ListItem type, otherwise use Cast<ListItem>() 
if (!cblCustomerList.Items.Any(i => i.Selected)) 
{ 
    // TODO: Warn an user 
} 
9
if(cblCustomerList.Items.Cast<ListItem>().Any(item => item.Selected)) 
{ 
    // at least one selected 
} 
4

Попробуйте это;

boolean b = cblCustomerList.Items.Cast<ListItem>().Any(i => i.Selected) 

если b является true, по крайней мере, один выбран в вашем CheckBoxList.

Не забудьте использовать пространство имен System.Linq.

0

Самый простой способ я могу думать ....

public void alert() 
     { 
      int i=0; 
      foreach (ListItem listItem in cblCustomerList.Items) 
      { 
       if (listItem.Selected) 
       { 
        i++; 
       } 
      } 
      if(i !=0) 
      { 
       Response.Write("Please check at least one option"); 
      } 
     } 
    } 
1
 if(! cblCustomerList.Items.Cast<ListItem>().AsParallel().Any(i => i.Selected)) 
     { 
      ShowAlert("Please select at least one option"); 
     } 
+0

@naveen, спасибо за внимание. Я изменил логику. –

1

решение JQuery.

if (!$(".CheckBoxList").find("input:checked").length) { 
    alert("Houston, we've had a problem!"); 
} 
Смежные вопросы