Entwickler-Ecke

ASP.NET und Web - Panel innerhalb von ListView


Inoir - Mo 29.08.11 14:30
Titel: Panel innerhalb von ListView
Hey!

Folgende Sache... ich bin dabei mir eine Admin-Seite für mein Gästebuch zu erstellen.
Dabei soll es möglich sein einen Eintrag aus dem Gästebuch zu editieren/löschen, was auch immer. Die Auswahl dafür sollte über ein HoverMenuExtender erfolgen.

Problem jetzt: TargetControlID="CommentPanel" gibt er mir immer zurück: "Die TargetControlID von "HoverMenuEdit" ist nicht gültig. Ein Steuerelement mit der ID "CommentPanel" konnte nicht gefunden werden."

Hier mein Code, damit das ganze was verständlicher wird:


C#-Quelltext
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:
        <cc1:HoverMenuExtender ID="HoverMenuEdit" runat="server" TargetControlID="CommentPanel" PopupControlID="EditMenuePanel" PopupPosition="Bottom" />  
        <asp:Panel ID="EditMenuePanel" runat="server" Width="300" CssClass="PanelCSS" BorderWidth="1" BorderColor="Gray" />        
        <asp:SqlDataSource ID="GuestbookSQLAdmin" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnection %>" />
                <asp:ListView ID="gbOutputAdmin" runat="server">
            <LayoutTemplate>                
                    <asp:PlaceHolder runat="server" ID="itemPlaceholder" />                
            </LayoutTemplate>             
            <ItemTemplate>                
                    <table style="border: 3; text-align: center; margin-left: auto; margin-right: auto">
                        <tr style="font-size: x-small">               
                            <td>
                                am
                                <%# Eval("EntryDate") %>
                                von
                                <a href="mailto:<%# Eval("Email") %>"><%# Eval("Name") %></a>
                            </td>
                        <tr>               
                            <td>
                           <asp:Panel runat="server" ID="CommentPanel" BackColor="red" style="margin-left:auto;margin-right:auto">
                             <%# Eval("Comment") %> </asp:Panel>
                             
                                                                               
                            </td>
                        </tr>
                    </table>
                                         
            </ItemTemplate>
        </asp:ListView>


Hab mal nur das "wichtigste" zitiert.
Ums nochmal aufn Punkt zu bringen:
Meine Frage: Wie kann ich den Panel mit der ID "CommentPanel" ansprechen? selbst in der Code-Behind Datei ist dieser Panel einfach nicht ansprechbar!


Inoir - Mo 29.08.11 15:25

Soo .. hab mittlerweile selbst was rausgefunden, was mir aber nicht wirklich weiterhilft! Aber schreib das mal trotzdem hier rein, vlt nützt es euch was:

Mit

C#-Quelltext
1:
Panel cp = gbOutputAdmin.FindControl("CommentPanel"as Panel                    

kann ich zumindest in der Code-Behind den Panel finden, zumindest laut Aussagen im Internet! (noch nicht getestet!)

Problem dann wäre aber, wie ich das in die TargetControlID übergebe, dass das Ding unter "cp" liegt?!


Kha - Mo 29.08.11 15:33

Bin von Webforms schnell zu MVC gewechselt, aber kannst du den HoverMenuExtender im Code nicht einfach direkt neben das Target legen, quasi in den gleichen Namensraum? Du wirst ja auch so viele Extender wie Panels benötigen.


Inoir - Mo 29.08.11 15:40

Oh Mann ...
Danke dir! Damit klappt das ganze wunderbar! Wieder mal Brett vorm Kopp!