Ich bekomme in CustomServerControls eingebettete UpdatePanel nicht zum laufen

20/11/2009 - 09:27 von Michael Schöller | Report spam
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
<div class="moz-text-flowed"
style="font-family: -moz-fixed; font-size: 13px;" lang="x-western">Hallo,<br>
<br>
Ich beschàftige mich erst seit kurzen mit AJAX und habe schon ein
Problem.<br>
Ich muß ein CustomServerControl schreiben das eine variable Anzahl von
UpdatePanel hat (abhàngig von den Daten mit denen es gefüttert wird).
Diese UpdatePanel sollen auch einzeln Ansprechbar und aktualisierbar
sein.<br>
Leider komme ich nicht mehr weiter deshalb habe ich ein kleines (mehr
statisches) Testprojekt geschieben um mir das Problem genauer
anzusehen, aber auch hier stecke ich irgentwie fest.<br>
Ich wàre wirklich froh wenn mir wer Zeigen könnte wo mein Fehler liegt.<br>
<br>
Ich habe eine ASP.NET Webapplikation (AJAXTest) erstellt und eine
ServerControlLibrary (ServerControlTest)<br>
Default.asxp:
<br>
<br>
&lt;%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="AJAXTest._Default" %&gt;
<br>
<br>
&lt;%@ Register assembly="ServerControlTest"
namespace="ServerControlTest" tagprefix="cc1" %&gt;
<br>
<br>
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" <a
class="moz-txt-link-rfc2396E"
href="http://www.w3.org/TR/xhtml1/DTD/xht..."http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</a>&gt;
<br>
<br>
&lt;html xmlns=<a class="moz-txt-link-rfc2396E"
href="http://www.w3.org/1999/xhtml">"http://www.w3.org/1999/xhtml"</a>
&gt;
<br>
&lt;head runat="server"&gt;
<br>
   &lt;title&gt;&lt;/title&gt;
<br>
&lt;/head&gt;
<br>
&lt;body&gt;
<br>
   &lt;form id="form1" runat="server"&gt;
<br>
   &lt;asp:ScriptManager ID="ScriptManager1" runat="server"&gt;
<br>
   &lt;/asp:ScriptManager&gt;
<br>
   &lt;div&gt;
<br>
         &lt;asp:UpdatePanel ID="UpdatePanel1" runat="server"&gt;
<br>
           &lt;ContentTemplate&gt;
<br>
               &lt;asp:Timer ID="Timer1" runat="server" Interval="1000"
ontick="Timer1_Tick"&gt;
<br>
               &lt;/asp:Timer&gt;
<br>
               &lt;asp:Label ID="Label1" runat="server"
Text="Label"&gt;&lt;/asp:Label&gt;
<br>
           &lt;/ContentTemplate&gt;
<br>
       &lt;/asp:UpdatePanel&gt;
<br>
     &lt;/div&gt;
<br>
   &lt;cc1:ServerControl1 ID="ServerControl11" runat="server" /&gt;
<br>
   &lt;/form&gt;
<br>
&lt;/body&gt;
<br>
&lt;/html&gt;
<br>

<br>
Code Behind:
<br>

<br>
using System;
<br>
<br>
namespace AJAXTest
<br>
{
<br>
   public partial class _Default : System.Web.UI.Page
<br>
   {
<br>
       protected void Page_Load(object sender, EventArgs e)
<br>
       {
<br>
           if(!IsPostBack)
<br>
           {
<br>
               ServerControl11.Text1 = DateTime.Now.ToString();
<br>
               ServerControl11.Text2 DateTime.Now.AddDays(1D).ToString();
<br>
           }
<br>
       }
<br>
<br>
       protected void Timer1_Tick(object sender, EventArgs e)
<br>
       {
<br>
           Label1.Text = DateTime.Now.ToString();
<br>
           ServerControl11.Text1 = DateTime.Now.ToString();
<br>
           ServerControl11.Text2 = DateTime.Now.AddDays(1D).ToString();
<br>
<br>
           ServerControl11.TestPanel1.Update();
<br>
       }
<br>
   }
<br>
}
<br>
<br>
ServerControl1 in ServerControlTest:
<br>
-
<br>
using System;
<br>
using System.ComponentModel;
<br>
using System.Web.UI;
<br>
using System.Web.UI.WebControls;
<br>
<br>
namespace ServerControlTest
<br>
{
<br>
   [DefaultProperty("Text")]
<br>
   [ToolboxData("&lt;{0}:ServerControl1
runat=server&gt;&lt;/{0}:ServerControl1&gt;")]
<br>
   public class ServerControl1 : WebControl
<br>
   {
<br>
       private UpdatePanel _testPanel1;
<br>
       private UpdatePanel _testPanel2;
<br>
<br>
       public UpdatePanel TestPanel1 { get { return _testPanel1; } }
<br>
       public UpdatePanel TestPanel2 { get { return _testPanel2; } }
<br>
<br>
       [Bindable(true)]
<br>
       [Category("Appearance")]
<br>
       [DefaultValue("")]
<br>
       [Localizable(true)]
<br>
       public string Text1
<br>
       {
<br>
           get
<br>
           {
<br>
               String s = (String)ViewState["Text1"];
<br>
               return (s ?? string.Empty);
<br>
           }
<br>
<br>
           set
<br>
           {
<br>
               ViewState["Text1"] = value;
<br>
           }
<br>
       }
<br>
<br>
       [Bindable(true)]
<br>
       [Category("Appearance")]
<br>
       [DefaultValue("")]
<br>
       [Localizable(true)]
<br>
       public string Text2
<br>
       {
<br>
           get
<br>
           {
<br>
               String s = (String)ViewState["Text1"];
<br>
               return (s ?? string.Empty);
<br>
           }
<br>
<br>
           set
<br>
           {
<br>
               ViewState["Text2"] = value;
<br>
           }
<br>
       }
<br>
<br>
       protected override void OnInit(EventArgs e)
<br>
       {
<br>
           base.OnInit(e);
<br>
           _testPanel1 = new UpdatePanel
<br>
           {
<br>
               ID = this.ID + this.IdSeparator + "UpdatePanel1",
<br>
               UpdateMode = UpdatePanelUpdateMode.Conditional,
<br>
               ChildrenAsTriggers = false,
<br>
               Page = this.Page
<br>
           };
<br>
           _testPanel2 = new UpdatePanel
<br>
           {
<br>
               ID = this.ID + this.IdSeparator + "UpdatePanel2",
<br>
               UpdateMode = UpdatePanelUpdateMode.Conditional,
<br>
               ChildrenAsTriggers = false,
<br>
               Page = this.Page
<br>
           };
<br>
       }
<br>
<br>
       protected override void RenderContents(HtmlTextWriter output)
<br>
       {
<br>
           Label label1 = new Label {ID = this.ID + this.IdSeparator +
"Label1", Text = Text1};
<br>
           Label label2 = new Label {ID = this.ID + this.IdSeparator +
"Label2", Text = Text2};
<br>
           _testPanel1.ContentTemplateContainer.Controls.Add(label1);
<br>
           _testPanel2.ContentTemplateContainer.Controls.Add(label2);
<br>
           _testPanel1.RenderControl(output);
<br>
           _testPanel2.RenderControl(output);
<br>
       }
<br>
   }
<br>
}
<br>

<br>
<br>
LG<br>
Michael
<br>
<br>
</div>
</body>
</html>
 

Lesen sie die antworten

#1 Karsten Samaschke
22/11/2009 - 11:13 | Warnen spam
Michael Schöller schrieb:

Ich wàre wirklich froh wenn mir wer Zeigen könnte wo mein Fehler liegt.



Wo genau fügst Du denn die generierten UpdatePanels dem übergeordneten
Control (in dem sie deklariert sind) hinzu? Also, an welcher Stelle
erfolgt das Hinzufügen zur Controls-Auflistung?


Mit freundlichen Gruessen / Best regards,

Karsten Samaschke
IT-Development, IT-Training, IT-Coaching

Nerd: http://www.aspextra.de
Blog: http://karsan.de
Family: http://www.familyblogger.de
Community: http://www.aspnetzone.de

Sent via MacBook Pro / OS X 10.6 (Snow Leopard)

Ähnliche fragen