Bonjour,
Je souhaite ajouter un onclick coté client sur une ligne d'un GridView. Malheureusement, comme j'ai activé le bouton select du GridView (en le rendant invisible), lors du rendering, un onclick est généré pour faire un postback.
Au final, un seul des deux onclick est pris en compte (je n'ai plus le postback). Existe-t-il un moyen d'ajouter du javascript à la suite ou avant celui qui est généré lors du rendering ?
Pour plus de précision, voici mon code
ASPX
Code behind
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <asp:GridView runat="server" ID="gvListeComptes" AutoGenerateColumns="false" OnRowDataBound="gvListeComptes_RowDataBound" OnPreRender="gvListeComptes_PreRender" OnSelectedIndexChanged="gvListeComptes_SelectedIndexChanged"> <Columns> <asp:CommandField ShowSelectButton="true" Visible="false" /> <asp:TemplateField HeaderText="N° compte"> <ItemTemplate> <asp:Label runat="server" ID="_lblNumCompte"></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 protected void gvListeComptes_RowDataBound(object sender, GridViewRowEventArgs e) { // Teste si la ligne est une ligne de donnée et si elle n'est pas vide if (e.Row.RowType == DataControlRowType.DataRow && e.Row.DataItem != null) { // Obtient le contrôle LinkButton de la première cellule LinkButton singleClickButton = (LinkButton)e.Row.Cells[0].Controls[0]; if (singleClickButton != null) { // Obtient le javascript qui est assigné à ce LinkButton string jsSingle = Page.ClientScript.GetPostBackClientHyperlink(singleClickButton, ""); // Ajoute ce javascript à l'attribut onclick de la ligne e.Row.Attributes["onclick"] = jsSingle; } // Obtient les contrôles de chaque ligne Label lblNumCompte = (Label)e.Row.FindControl("_lblNumCompte"); MesDonnees item = (MesDonnees)e.Row.DataItem; // Remplit la ligne avec les données lblNumCompte.Text = item.numCompte; } } // Modification du rendu du GridView avant son envoie au client protected void gvListeComptes_PreRender(object sender, EventArgs e) { if (gvListeComptes.Rows.Count != 0) { foreach (GridViewRow myRow in gvListeComptes.Rows) { string rowIndex = myRow.ClientID; myRow.Attributes.Add("onClick", "ActiveRowTable('" + rowIndex + "');"); } } }
Xavier
Partager