Wählen Sie alle Checkboxen im gridview-aus-Schaltfläche der client-Seite
Ich habe ein gridview mit Zeilen, die eine checkbox. Unter dem gridview habe ich eine Schaltfläche. Wenn ich es auf ich wollen, wählen Sie alle Kontrollkästchen client-Seite. So weit ich gelesen habe, über OnClientClick, javascript und so weiter.. aber mein code funktioniert nicht. Kann mir jemand helfen bitte?
Hinweis: ich will nicht wählen Sie die Kontrollkästchen, aktivieren Sie das Kontrollkästchen in der Kopfzeile (ich fand eine Menge von Beispielen über diese), aber das klicken auf eine Schaltfläche außerhalb des 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;
}
}
}
in c#, wenn ich die Daten gebunden werden:
btnSelect.Attributes.Add("OnClientClick", "javascript:SelectAll('" + btnSelect.ClientID + "')");
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde vorschlagen, tun dies vollständig client-Seite mit Hilfe von jQuery. Ich gehe davon neue ASP.NET machen würde-IDs für Elemente die Weise, die Sie Sie genannt, so verwende ich diese. (Ich glaube, es ist eine Einstellung, die in ASP.NET render-IDs auf diese Weise)
Hier einige Beispiel-code, den Sie auf der Unterseite Ihres HTML-code nach dem einbinden von jQuery:
Wird diese Option und aktivieren Sie nur die Kontrollkästchen in der GridView, vorausgesetzt, die erbrachten ID für das GridView-container-element ist "MyGridView".
Scheinen Sie zu sagen: "Wenn mein button ist 'aktiviert' (nämlich das element entsprechend der ID, die Sie sind, übergeben), dann aktivieren Sie dieses Kontrollkästchen,". Da ein button kann nicht überprüft werden, das ist nicht zur Arbeit gehen.
Bist du auch sagen "beim klicken Auf diese Schaltfläche, rufen Sie dieses Javascript und übergeben Sie den Wert der Variablen
id
." Aberid
ist nicht definiert in diesem Zusammenhang.Wenn alle Sie wollen, ist wählen Sie alle Kontrollkästchen, und nicht wollen, wechseln Sie zwischen alle/keiner überprüft, sollte dieser code funktionieren:
HTML:
In javascript:
}
Sollten Sie nicht brauchen c# - code.
Schließlich fand ich die Lösung, und es funktioniert. Ich veränderte leicht die Lösung von @Ann L.
Ich habe getan, wie diese,Finden, der input-Elemente im raster mithilfe
getElementsByTagName("input")
. Dann Durchlaufen und der Wert überprüft.HTML
Javascript