Laden...

UpdatePanel im Code Behind erstellen

Erstellt von Jabi vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.531 Views
J
Jabi Themenstarter:in
222 Beiträge seit 2006
vor 16 Jahren
UpdatePanel im Code Behind erstellen

Hallo,
Ich habe folgendes Problem ....
ich habe mir ein Custom webControl erstellt in dem ich einen Scriptmanagerproxy, ein UpdatePanel und eine dropdownlist erstelle

leider funktioniert der AjaxPostback nicht sondern wenn ich einen Postback über die Dropdownlist auslöse kommt auch ein normaler seiten postback ... Obwohl ich beim UpdatePanel ChildrenAsTrigger = true eingestellt habe

leider komme ich bei dem Problem nciht weiter da ich den fehler einfach nicht finde ...
so habe ich die Controls erstellt :


public class ThemeBox : Panel
    {
        public ThemeBox()
        {
            // Create ScriptManagerProxy for Ajax supprot
            ScriptManagerProxy scp = new ScriptManagerProxy();
            this.Controls.Add(scp);
            UpdatePanel udp = new UpdatePanel();
            udp.UpdateMode = UpdatePanelUpdateMode.Conditional;
            udp.ID = "ThemeBoxUpdatePanel";
            udp.ChildrenAsTriggers = true;
            udp.EnableViewState = true;
            // Controls to Add
            ThemeDropDownList tddl = new ThemeDropDownList();
            // Add Controls to Content Template
            //### UPDATE PROGRESS ###
            UpdateProgress uProg = new UpdateProgress();
            img = new Image();
            img.Width = 20;
            img.Height = 20;
            img.ImageURL =".......";
            uProg.Controls.Add(img);
            uProg.DynamicLayout = true;
            uProg.DisplayAfter = 100;
            MyTemplate progTemplate = new MyTemplate();
            uProg.ProgressTemplate = progTemplate;
            udp.ContentTemplateContainer.Controls.Add(uProg);
            //### UPDATE PROGRESS end ###
            udp.ContentTemplateContainer.Controls.Add(tddl);
            //Add Udp To the Panel
            this.Controls.Add(udp);
        }

        internal  class MyTemplate : ITemplate
        {
	        public void InstantiateIn(Control container)
	        {
	         // This is empty.
	        }
        }
        protected override void Render(HtmlTextWriter writer)
        {
            base.Render(writer); 
        }

    }

muss man sonst noch etwas einstellen damit der Ajax Postback ausgelöst wird ?
in der ThemeDropDownList ist im Konstrukt AutoPostBack = True eingestellt ...
ChildrenAsTriggers = true; sollte doch reichen ......

zu erwähnen das ist eine Asp.net 3.5 seite
über jede hilfe währe ich sehr dankbar

J
Jabi Themenstarter:in
222 Beiträge seit 2006
vor 16 Jahren

habe die lösung gefunden

Alles gehört im OnInit() definiert + einen AsyncPostBackTrigger adden :


protected override void OnInit(EventArgs e)
        {

            ScriptManagerProxy scp = new ScriptManagerProxy();
            this.Controls.Add(scp);
            UpdatePanel udp = new UpdatePanel();
            udp.UpdateMode = UpdatePanelUpdateMode.Conditional;
            udp.ID = "ThemeBoxUpdatePanel";
            udp.ChildrenAsTriggers = true;
            udp.EnableViewState = true;
            // Controls to Add
            ThemeDropDownList tddl = new ThemeDropDownList();
            tddl.ID = "ThemeBoxThemeDropDownList";
            // Add Controls to Content Template
            //### UPDATE PROGRESS ###
            UpdateProgress uProg = new UpdateProgress();
            img = new Image();
            img.ID = "ThemeBoxProgressImage";
            img.Width = 20;
            img.Height = 20;
            ClientScriptManager cs = this.Page.ClientScript;
            img.ImageUrl = cs.GetWebResourceUrl(this.GetType(), ".......");
            uProg.ID = "ThemeBoxUpdateProgress";
            uProg.Controls.Add(img);
            uProg.DynamicLayout = true;
            uProg.DisplayAfter = 100;
            MyTemplate progTemplate = new MyTemplate();
            uProg.ProgressTemplate = progTemplate;
            udp.ContentTemplateContainer.Controls.Add(uProg);
            //### UPDATE PROGRESS end ###
            udp.ContentTemplateContainer.Controls.Add(tddl);
            // Add Triger
            AsyncPostBackTrigger trigger1 = new AsyncPostBackTrigger();
            trigger1.ControlID = tddl.UniqueID;
            trigger1.EventName = "SelectedIndexChanged";
            udp.Triggers.Add(trigger1);
            //Add Udp To the Panel
            this.Controls.Add(udp);
            base.OnInit(e);
        }