2012-03-01 22 views
0

之外我哈瓦在側的數據列表,我有複選框選擇/取消按鈕點擊數據列表的所有複選框是數據列表

<asp:DataList ID="dlst1" runat="server" RepeatDirection="Horizontal" OnItemDataBound="dlst1_ItemDataBound" CaptionAlign="Left"> 
<ItemTemplate> 
     <asp:ImageButton ID="btnImage" runat="server" /> 

     <asp:Label ID="lbl" runat="server"/> 

     <asp:CheckBox ID="Chkbox" runat="server" TextAlign="Right" /> 
    </ItemTemplate> 
</asp:DataList> 

我有2個按鈕

我想檢查所有複選框,當用戶點擊檢查所有btn,並選中全部複選框,當用戶點擊取消全選btn時,我不想回發任何郵件,如何在客戶端執行。

我想

function CheckOrUncheckAll(isChecked) { 
    var dataList = document.getElementById('<%= DataList.ClientID %>'); 
    for (var index = 0; index < dataList.rows.length; index++) { 
     for (var cIndex = 0; cIndex < dataList.rows[index].cells.length; cIndex++) { 
      dataList.rows[index].cells[cIndex].childNodes[3].checked = isChecked; 
          } 
        } 
        return false; 
      } 

    <asp:Button ID="btnCheckAll" runat="server" Text="Check All" OnClientClick="return CheckOrUncheckAll(true)" /> 
    <asp:Button ID="btnUnCheckAll" runat="server" Text="Uncheck All" OnClientClick="return CheckOrUncheckAll(false)" /> 

其工作正常,但我不希望使用的childNodes [3],因爲在未來的數據列表的東西得到了補充,然後我需要改變指數..任何的jQuery改變這個功能

回答

1

我想,你必須使用jQuery。

檢查:

$("#<%=btnCheckAll.ClientID %>").click(function() { 
    $("#<%= dlst1.ClientID %> input:checkbox").attr("checked", "checked"); 
    }); 

要取消:

$("#<%=btnUnCheckAll.ClientID %>").click(function() { 
    $("#<%= dlst1.ClientID %> input:checkbox").removeAttr("checked"); 
    }); 
+0

我試過,但其不工作 – Rocky 2012-03-01 10:32:07

+0

把這個代碼在頁面的頭:

2

請嘗試以下

function CheckUnCheckAll(checkoruncheck) 
     { 
      var list = document.getElementById("<%=dlst1.ClientID%>") ; 
      var chklist = list.getElementsByTagName("input"); 
      for (var i=0;i<chklist.length;i++) 
      { 
       if (chklist[i].type=="checkbox") 
       { 
        chklist[i].checked = checkoruncheck; 
       } 
      } 
     } 

稱此爲

CheckUnCheckAll(true); 

CheckUnCheckAll(false); 
相關問題