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
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);
}