我有一个包含复选框的行的gridview。在gridview下面我有一个按钮。当我点击它时,我想从客户端选择所有的复选框。到目前为止,我已阅读关于OnClientClick,JavaScript等等,但我的代码不起作用。有人可以帮我吗?从按钮客户端选择gridview中的所有复选框
注:我不想选择复选框在头选择复选框(我发现了很多关于这方面的例子),但点击在GridView
<asp:GridView runat="server" ID="MyGridView" EnableViewState="true"
AutoGenerateColumns="False"
><AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="Select" SortExpression="Select" ItemStyle-HorizontalAlign="Center" >
<EditItemTemplate>
<asp:CheckBox ID="CkBoxSelectET" runat="server" /></EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="CkBoxSelectIT" runat="server" /></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name" SortExpression="Name" ItemStyle-HorizontalAlign="Center" Visible="false" >
<ItemTemplate>
<asp:Label ID="name" runat="server" Text='<%# Bind("Name") %>' Visible="false" /></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="City" SortExpression="City" ItemStyle-HorizontalAlign="Left" >
<ItemTemplate>
<asp:Label ID="lblCity" runat="server" /></ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button runat="server" ID="btnSelect" Text="Select all" BackColor="LightGray" OnClientClick="SelectAll(id);" />
<script type="text/javascript">
var gridViewControl = document.getElementById('<%= MyGridView.ClientID %>');
function SelectAll(id) {
for (i = 0; i < gridViewControl.elements.length; i++) {
if (gridViewControl.elements[i].type == "checkbox") {
gridViewControl.elements[i].checked = document.getElementById(id).checked;
}
}
}
外的按钮C#,当我绑定数据:
btnSelect.Attributes.Add("OnClientClick", "javascript:SelectAll('" + btnSelect.ClientID + "')");
修改为你建议我,但它仍然无法正常工作.. – Camilla 2013-03-07 14:54:16
我认为实际的JavaScript是更多的想法/例,比实际的工作代码。变量“gridViewControl”尚未设置。您需要确保在“gridViewControl”变量中选择正确的DOM元素,然后循环其中的复选框。 jQuery的完美工作。 – Floremin 2013-03-07 15:13:13
@Camilla你有错误,或者什么也没有发生? – 2013-03-07 15:42:15