2014-10-11 68 views
0

我需要限制用戶在GridView中選擇的複選框的數量在C#asp網絡。在gridview中選擇的複選框的限制數在c#

我嘗試下面的代碼,但我有兩個問題:

  1. 'Cannot check more than 3 check boxes'複選框數四是始終選擇警報彈出後;
  2. 按鈕btn已啓用並驗證窗體。

我錯過了什麼?

這段代碼有什麼問題?

預先感謝您。

<%@ 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 type="text/javascript"> 
     function CheckCheck() { 
      var chkBoxList = document.getElementById('<%=GridView1.ClientID %>'); 
      var chkBoxCount = chkBoxList.getElementsByTagName("input"); 

      var btn = document.getElementById('<%=btn.ClientID %>'); 
      var i = 0; 
      var tot = 0; 
      for (i = 0; i < chkBoxCount.length; i++) { 
       if (chkBoxCount[i].checked) { 
        tot = tot + 1; 
       } 
      } 

      if (tot > 3) { 
       alert('Cannot check more than 3 check boxes'); 
      } 
     } 

    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> 
      <Columns> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <asp:CheckBox ID="cbSelProduct" runat="server" onclick="javascript:CheckCheck();" /> 
         <asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("name")%>' /> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:BoundField ItemStyle-Width="250px" DataField="name" HeaderText="name" /> 
      </Columns> 
     </asp:GridView> 
     <asp:Button runat="server" ID="btn" Text="Send" OnClick="btn_Click" /> 
    </div> 
    </form> 
</body> 
</html> 

回答

1

您需要取消4選中的複選框:

function CheckCheck() 
{ 
    var chkBoxList = document.getElementById('<%=GridView1.ClientID %>'); 
    var chkBoxCount = chkBoxList.getElementsByTagName("input"); 

    var btn = document.getElementById('<%=btn.ClientID %>'); 
    var i = 0; 
    var tot = 0; 
    for (i = 0; i < chkBoxCount.length; i++) 
    { 
     if (chkBoxCount[i].checked) 
     { 
      tot = tot + 1; 

      if (tot > 3) 
      { 
       alert('Cannot check more than 3 check boxes'); 
       chkBoxCount[i].checked = false; 
       return; 
      } 
     } 
    } 
}