2013-03-06 26 views
6

チェックボックスリストがあります。少なくとも1つのチェックボックスがオンになっているかどうかを確認したいと思います。どれもチェックされていない場合は、少なくとも1つのアイテムを選択してくださいというアラートメッセージを表示します。可能であれば、コード内でこれをやりたい私は始めましたが、それが正しいのか間違っているのか分かりませんが、それを終えることはできません。ここ少なくとも1つのチェックボックスリストが選択されていることを確認してください。

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

は、ASPXでCheckBoxListのである:ここ

<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

コードは –

+0

のコードではなくJSでなければなりません。この種のチェックは、javascriptを使用してクライアント側で行う方が良いです。サーバからのデータに依存するものは何もありません – codingbiz

+0

@bothクライアント側の検証をバイパスすることはとても簡単です。検証の背後にあるコードを望むことは、まったく合理的です。 – BinaryTox1n

答えて

6

編集:

ここに1つのサンプルコードがあります。私にはその作業

は、このスクリプトファイルを追加する必要があります。<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> 

制御を変更します。ボタンcontrol.lookサンプルコードでjavascript functionと呼んでください。

Chears !!!

編集

このスクリプトファイル

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

代わりに、あなただけのcblCustomerList.SelectedItem == nullを使用することになり<script src="scripts/jquery-1.8.3.min.js" type="text/javascript"></script>

+0

あなたのjsコードをprettifying ... – naveen

+0

私のコントロールidはcblCustomerListと呼ばれていますどこであなたはJavaScriptでそれを呼びますか?ここではaspxの私のチェックボックスリストです: user1858332

+0

新しいコードを編集しました。新しいコードを確認してください。その作業 –

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) 

btrueであれば、少なくとも一つは、あなたの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!"); 
} 
関連する問題