2013-02-21 34 views
2

我有以下的網格視圖 -選擇網格視圖所有複選框

<asp:GridView ID="group_table" Runat="server" 
    AutoGenerateColumns="False" onprerender="group_table_PreRender" 
    onrowdatabound="group_table_RowDataBound" 
    ClientIDMode="Static" CellPadding="4" ForeColor="#333333" 
    GridLines="None" Width="915px" BorderStyle=Ridge > 
    <AlternatingRowStyle BackColor="White" /> 

    <Columns> 
    <asp:TemplateField ItemStyle-Width=90> 
     <HeaderTemplate> 
      <asp:CheckBox ID="selectAllCheckBox" runat="server" Text="Select all"/> 
     </HeaderTemplate> 
    <ItemTemplate> 

     <asp:CheckBox ID="selectCheckBox" runat="server"/> 


    </ItemTemplate> 

    </asp:TemplateField> 

,並試圖實現JavaScript函數下面,這樣當用戶點擊selectAllCheckBox所有複選框將被檢查 -

$(document).ready(function() { 

    var headerCheckbox = $('#group_table > tbody > tr > th > input:checkbox'); 

    headerCheckbox.click(function() { 
    var headerChecked = $(this).attr('checked'); 
    var rowCheckboxes = $('#group_table > tbody > tr > td > input:checkbox'); 
    rowCheckboxes.attr('checked', headerChecked); 
    }); 

}); 

但由於某種原因,這沒有任何影響,我會在哪裏出錯?

+0

你能給我們生成的html輸出? – acme 2013-02-21 13:21:02

+0

不應該'headerCheckbox'選擇器是$(「#group_table> thead> tr> th> input:checkbox」);'? – mattytommo 2013-02-21 13:21:58

+0

@mattytommo這是正確的答案,並解決了問題,如果你把答案放下,我會標記爲正確的,因爲你是第一個發現問題。 – Ebikeneser 2013-02-21 13:25:36

回答

1

正如我對問題的評論(你說的是正確的)中所述,你有headerCheckbox變量的選擇錯誤。表標題在thead而不是tbody。試試這個:

var headerCheckbox = $("#group_table > thead > tr > th > input:checkbox"); 
0

我不知道如何asp:GridView生成的HTML,但也許問題是你添加點擊處理程序tbody > tr > th而不是thead > tr > th

1

如果我是你,我早就這樣做了

<asp:GridView ID="group_table" runat="server" AutoGenerateColumns="False" ClientIDMode="Static" 
     CellPadding="4" ForeColor="#333333" GridLines="None" Width="915px" BorderStyle="Ridge"> 
     <AlternatingRowStyle BackColor="White" /> 
     <Columns> 
      <asp:TemplateField ItemStyle-Width="90"> 
       <HeaderTemplate> 
        <asp:CheckBox ID="selectAllCheckBox" runat="server" Text="Select all" onclick="toggleChecks(this);" /> 
       </HeaderTemplate> 
       <ItemTemplate> 
        <asp:CheckBox ID="_CheckBox" runat="server" CssClass="psudoClass" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
</asp:GridView> 

添加的複選框被選中,這樣做

function toggleChecks(sender) { 
    $(".psudoClass").each(function (index, item) { 
     item.children[0].checked = sender.checked; 
    }); 
} 
+0

不錯,整潔,我可以嘗試和實施這個,很好的額外建議。 – Ebikeneser 2013-02-21 13:42:24