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 : 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&deg; compte">
         <ItemTemplate>
            <asp:Label runat="server" ID="_lblNumCompte"></asp:Label>
         </ItemTemplate>
      </asp:TemplateField>
   </Columns>
</asp:GridView>
Code behind
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 + "');");
 	    }
        }
    }
Merci d'avance pour votre aide.

Xavier