Bonjour,
j'essaie désespérément d'afficher un menu avec un lien edit et delete par exemple s'affichant lorsque la souris survole une ligne d'un gridview. Après avoir cherché de l'info sur différents forums, je suis arrivé à la solution ci-dessous.
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
 
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="i_bank_account" DataSourceID="ObjectDataBankAccount" 
                AllowSorting="True" onrowcreated="Gridview1_RowCreated" onrowdatabound="GridView1_RowDataBound">
                    <Columns>
                        <asp:TemplateField   HeaderText="Select" ItemStyle-HorizontalAlign="Center" >
                            <ItemTemplate>
                                <asp:CheckBox ID="chkSelect" runat="server" AutoPostBack="true" OnCheckedChanged="chkSelect_CheckedChanged"/>
                                <asp:Panel ID="popupMenu" runat="server" style="display:none">
                                    <div style="border:1px outset white;padding:2px;">
                                        <div><asp:LinkButton ID="lnkButtonEdit" runat="server" CommandName="Edit" Text="Edit" /></div>
                                        <div><asp:LinkButton ID="lnkButtonDelete" runat="server" CommandName="Delete" Text="Delete" /></div>
                                    </div>
                                </asp:Panel>
                                <cc1:HoverMenuExtender ID="HoverMenuExtender" runat="server" PopupControlID="PopupMenu" TargetControlID="PopupMenu" />
                            </ItemTemplate>
                        </asp:TemplateField>
 
                        <asp:BoundField DataField="i_bank_account" HeaderText="Bank account key" SortExpression="i_bank_account" Visible="False" 
                        HtmlEncode="False" >
                        </asp:BoundField>
                        <asp:BoundField DataField="r_bank_account" HeaderText="Bank account number"  SortExpression="r_bank_account" > 
                            <FooterStyle Width="400px" Wrap="False"/>
                            <HeaderStyle Width="400px" Wrap="False" />
                            <ItemStyle Width="400px" Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"/>   
                        </asp:BoundField>
                        <asp:BoundField DataField="l_bank_account_type" HeaderText="Account type" SortExpression="l_bank_account_type" >    
 
                            <FooterStyle Width="350px" Wrap="False"/>
                            <HeaderStyle Width="350px" Wrap="False" />
                            <ItemStyle Width="350px" Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"/>   
                        </asp:BoundField>
                        <asp:BoundField DataField="l_fund" HeaderText="Fund" SortExpression="l_fund">
                            <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
 
                            <FooterStyle Width="350px" Wrap="False"/>
                            <HeaderStyle Width="350px" Wrap="False" />
                            ...
code behind:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
protected void Gridview1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            AjaxControlToolkit.HoverMenuExtender hoverMenu = (AjaxControlToolkit.HoverMenuExtender)e.Row.FindControl("HoverMenuExtender");
                e.Row.ID = "rowNumber_" + e.Row.RowIndex.ToString();
                hoverMenu.TargetControlID = e.Row.ID;
        }
 
    }
Le problème est qu'au lieu d'afficher le popup à côté de chaque ligne, il s'affiche à côté du header du gridview comme ci le TargetControlID spécifié était celui du gridview. En debug, j'ai contrôlé que pour chaque ligne le TargetControlID était bien différent pour chaque ligne et correspondait bien à l'ID créé pour chaque ligne et c'est bien le cas.

D'où peut provenir le problème ou comment puis-je réaliser ce que je veux faire autrement ? Quelle autre solution existe pour afficher un popup permettant de supprimer ou editer à côté de chaque ligne d'une gridview?

Un grand merci d'avance. Bon week-end !