2013-03-06 4 views
6

체크 박스 목록이 있는데 적어도 하나 이상의 체크 박스가 선택되어 있는지 확인하고 싶습니다. 아무 것도 선택되어 있지 않으면 하나 이상의 항목을 선택하십시오라는 경고 메시지를 표시하려고합니다. 가능하다면 코드에서이 작업을 수행하고 싶습니다. 나는 시작했으나 그것이 옳은지 틀린 것인지 모르지만 그것을 끝낼 수는 없습니다. 당신의 도움에 대한하나 이상의 체크 박스 목록이 선택되어 있는지 확인하십시오.

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

감사 :

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

버튼입니다 : 여기

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

는 영문의 checkboxlist입니다.

+1

코드 뒤에 –

+0

이 아닌 JS에 있어야합니다. 자바 스크립트를 사용하여 클라이언트 측에서 이런 종류의 검사를하는 것이 좋습니다.여기에 서버의 데이터에 의존하는 것은 없습니다 – 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> 

제어 대신 내 샘플 코드를 변경합니다. 그리고 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라고 어디에 자바 스크립트에서 호출하는거야? 여기 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) 

b 경우 적어도 하나는 당신의 checkboxlist에서 선택되어, true입니다.

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!"); 
} 
관련 문제