GridView et Checkbox : Fonction JS selectAll sur 2 userControls identiques
Bonjour,
J'ai un petit problème javascript vis à vis de l'interaction d'une fonction JS sur deux Usercontrols appelés dans la page.
Mon UserControl est composé d'un RadGrid (composant télérik équivalent à un GridView), et celui-ci contient un itemTemplate avec un Checkbox sur chaque ligne. Il contient également un checkbox en header pour faire en sorte qu'une fois checké, celui-ci check toutes les checkboxes de la grid.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<telerik:RadGrid ID="gvMessageAccueil" runat="server"
ShowStatusBar="true"
AllowPaging="True" PageSize="20" AutoGenerateColumns="false" >
<mastertableview NoMasterRecordsText="Aucun accessoire." >
<Columns>
<telerik:GridTemplateColumn ItemStyle-Width="1%" AllowFiltering="False" UniqueName="colChkSelect">
<HeaderTemplate>
<asp:CheckBox ID="CheckBoxHeader" runat="server" OnClick="selectAll(this)" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</mastertableview>
</telerik:RadGrid> |
Ceci rendu possible grâce à la fonction JS :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
function selectAll(invoker) {
var gridRef = document.getElementById('<%= gvMessageAccueil.ClientID %>');
var inputElements = gridRef.getElementsByTagName('input');
for (var i = 0; i < inputElements.length; i++) {
var myElement = inputElements[i];
if (myElement.type == "checkbox") {
myElement.checked = invoker.checked;
}
}
} |
Ceci fonctionne parfaitement tant que le UserControl n'est inclus qu'une fois dans la page.
S'il est appelé deux fois, le header de la première grid check toutes les lignes de la deuxième grid, mais pas celui de son propre tableau...
Comment dire à JS qu'il ne doit prendre que les éléments qui sont dans sa grid ?
D'avance merci.