none
ASP.NET Inhalte eines UserControls werden nie angezeigt RRS feed

  • Frage

  • Ich lade ein UserControl mit eingebetteten Controls dynamisch in ein UpdatePanel. Leider werden die Inhalte des UserControls nie angezeigt. Schlimmer noch: wenn ich im Page_Load des UserControls die eingebetteten Controls anschaue, sind deren Verweise NOTHING. In der Controls-Auflistung des UserControls jedoch sind die Einträge vorhanden (5 an der Zahl), lassen sich jedoch mit FindControl nicht ansprechen.

    Wer möchte, kann sich das mal anschauen. Ich brauche dafür dringend eine Lösung!

    Was mache ich grundlegend falsch? Bin für jeden Tipp dankbar!!!

    (VS 2008 SP1)

     Noch ein Nachtrag: das UserContol wird auf einer Page ohne Updatepanel problemlos angezeigt!!!

    UserControl:

    <%@ Control Language="vb" AutoEventWireup="true" CodeBehind="Edit.ascx.vb" Inherits="SCEDynSite.Edit" %>
    
    <asp:Table ID="Table1" runat="server" Height="16px" Width="529px">
    
    <asp:TableRow ID="TableRow1" runat="server">
    
    <asp:TableCell ID="TableCell1" runat="server">
    <asp:Image ID="Image1" runat="server" />
    </asp:TableCell>
    
    <asp:TableCell ID="TableCell2" runat="server">
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </asp:TableCell>
    
    <asp:TableCell ID="TableCell3" runat="server">
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    </asp:TableCell>
    
    </asp:TableRow> 
    
    </asp:Table>

    Testseite:

    <%@ Page Language="vb" AutoEventWireup="True" CodeBehind="WebForm1.aspx.vb" Inherits="SCEDynSite.WebForm1" %> 
    
    <%@ Register src="Edit.ascx" tagname="Edit" tagprefix="Edit" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    
    <html xmlns="http://www.w3.org/1999/xhtml" > 
    
    <head runat="server">
    <title>Unbenannte Seite</title> 
    </head> 
    
    <body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server"/>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    </asp:UpdatePanel> 
    </form> 
    
    </body> 
    
    </html>

    CodeBehind der Testseite

    Public Partial Class WebForm1 Inherits System.Web.UI.Page 
    
    Private Sub UpdatePanel1_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles UpdatePanel1.Init 
    	Dim Edit1 As New Edit 
    End Sub 
    
    End Class
    
    UpdatePanel1.ContentTemplateContainer.Controls.Add(Edit1)
    Freitag, 14. Januar 2011 10:01

Antworten

  • Hi,
    Ich lade ein UserControl mit eingebetteten Controls dynamisch in ein UpdatePanel. Leider werden die Inhalte des UserControls nie angezeigt . Schlimmer noch: wenn ich im Page_Load des UserControls die eingebetteten Controls anschaue, sind deren Verweise NOTHING . In der Controls-Auflistung des UserControls jedoch sind die Einträge vorhanden (5 an der Zahl), lassen sich jedoch mit FindControl nicht ansprechen.

    Du machst den Fehler, das Control mit New <Control> ... zu erstellen.

    Dim Edit1 As Edit = CType( Page.LoadControl( "~/pfad/zur/datei.ascx" ), Edit )

    sollte helfen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 14. Januar 2011 11:21
    Moderator
  • Hallo René,
    warum geht New bei den Standard-Controls wie Button, Textbox etc, jedoch nicht bei UserControls?

    weil ein UserControl eben auch aus der .ascx Datei, den dort eingebundenen Controls, ... besteht und ein New <ControlKlasse> hier nur die CodeBehind Klasse (also das, was in der datei.ascx.vb steht) instanziert.

    Bei einem CustomControl hast Du nur den Code selbst, bist selbst für ChildControls zuständig, für die Instanzierung, ... Bei den StandardControls und sauber programmierten eigenen CustomControls, geht das deshalb mit New ...

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 14. Januar 2011 15:38
    Moderator

Alle Antworten

  • Hi,
    Ich lade ein UserControl mit eingebetteten Controls dynamisch in ein UpdatePanel. Leider werden die Inhalte des UserControls nie angezeigt . Schlimmer noch: wenn ich im Page_Load des UserControls die eingebetteten Controls anschaue, sind deren Verweise NOTHING . In der Controls-Auflistung des UserControls jedoch sind die Einträge vorhanden (5 an der Zahl), lassen sich jedoch mit FindControl nicht ansprechen.

    Du machst den Fehler, das Control mit New <Control> ... zu erstellen.

    Dim Edit1 As Edit = CType( Page.LoadControl( "~/pfad/zur/datei.ascx" ), Edit )

    sollte helfen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 14. Januar 2011 11:21
    Moderator
  • Danke, Stephan,

    das hat direkt geholfen. Aber eine Frage noch an Dich - warum geht New bei den Standard-Controls wie Button, Textbox etc, jedoch nicht bei UserControls?

    Gruß

    René

    Freitag, 14. Januar 2011 14:05
  • Hallo René,
    warum geht New bei den Standard-Controls wie Button, Textbox etc, jedoch nicht bei UserControls?

    weil ein UserControl eben auch aus der .ascx Datei, den dort eingebundenen Controls, ... besteht und ein New <ControlKlasse> hier nur die CodeBehind Klasse (also das, was in der datei.ascx.vb steht) instanziert.

    Bei einem CustomControl hast Du nur den Code selbst, bist selbst für ChildControls zuständig, für die Instanzierung, ... Bei den StandardControls und sauber programmierten eigenen CustomControls, geht das deshalb mit New ...

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 14. Januar 2011 15:38
    Moderator