Hi, I am trying to create a simple ajax webpart, however all the Microsoft sugguestions seem to be failing.
I have installed Ajax and updated the web.config. The issue is with the scriptmanager. When I run the sample code below I get the following exception when adding the scripmanager to the masterpage "The control collection cannot be modified during DataBind, Init, Load, PreRender or Unload phases." If I use the following code rather than Page.Master.Page.Controls.AddAt(1, scriptManager), I don't get an exception, but when the user clicks the button, CreateChildControls is called rather than HandleButtonClick if (ScriptManager.GetCurrent(this.Page) == null) { ScriptManager Manager = new ScriptManager(); Manager.EnablePartialRendering = true; this.Controls.AddAt(0, Manager); } Could somone please help. I would rather add the scriptmanager dynamically if possible. THANKS. SAMPLE CODE private Label label; private TextBox textBox; private ScriptManager scriptManager; protected override void OnInit(EventArgs e) { base.OnInit(e); // Let's find if the ScriptManager exists and add it if not scriptManager = ScriptManager.GetCurrent(Page); if (scriptManager == null) { scriptManager = new ScriptManager(); if (Page.Form != null) { Page.Master.Page.Controls.AddAt(1, scriptManager) } } } protected override void CreateChildControls() { base.CreateChildControls(); this.EnsureUpdatePanelFixups(); UpdatePanel up = new UpdatePanel(); up.ID = "UpdatePanel1"; up.ChildrenAsTriggers = true; up.UpdateMode = UpdatePanelUpdateMode.Conditional; this.Controls.AddAt(1, up); this.textBox = new TextBox(); this.textBox.ID = "TextBox"; up.ContentTemplateContainer.Controls.Add(this.textBox); this.label = new Label(); this.label.Text = "Enter your name."; up.ContentTemplateContainer.Controls.Add(this.label); LinkButton button = new LinkButton(); button.Text = "Say Hello"; button.ID = "HelloButton"; // Some controls need an ID to make them work with AJAX postbacks. button.Click += new EventHandler(HandleButtonClick); up.ContentTemplateContainer.Controls.Add(button); } private void HandleButtonClick(object sender, EventArgs eventArgs) { this.label.Text = "Hello " + this.textBox.Text; } private void EnsureUpdatePanelFixups() { if (this.Page.Form != null) { String fixupScript = @" _spBodyOnLoadFunctionNames.push(""_initFormActionAjax""); function _initFormActionAjax() { if (_spEscapedFormAction == document.forms[0].action) { document.forms[0]._initialAction = document.forms[0].action; } } var RestoreToOriginalFormActionCore = RestoreToOriginalFormAction; RestoreToOriginalFormAction = function() { if (_spOriginalFormAction != null) { RestoreToOriginalFormActionCore(); document.forms[0]._initialAction = document.forms[0].action; } } "; ScriptManager.RegisterStartupScript(this, typeof(AjaxUpdatePanelPart), "UpdatePanelFixup", fixupScript, true); } } } ------------------------------------------------------------------- OzMOSS.com - to unsubscribe from this list, send a message back to the list with 'unsubscribe' as the subject. Powered by mailenable.com