Hello,
I'm having a little issue with the RadDock controls.
What I am trying to do is add a WebPart zone in the ContentContainer of my dock. This first step works fine.
EDIT : It works for the raddock which have their states saved in DB and are thus created on the
Then I want to add a WebPart in the previously created WebPartZone. This step also works fine.
The problem is when a postback occurs on the page.
My docks contains the WebPart initially created, and a new one! At every postback, the dock contains a new WebPart...
Here is the code that adds the WebPart:
Let me know if you need further information.
And if you have any solution of course!
I'm having a little issue with the RadDock controls.
What I am trying to do is add a WebPart zone in the ContentContainer of my dock. This first step works fine.
EDIT : It works for the raddock which have their states saved in DB and are thus created on the
dockLayoutHome_LoadDockLayout event. For the docks that I try to add on "runtime" (I have a RadAjaxPanel which contains the RadDockLayout) I get the following error:System.ApplicationException: A program is attempting to add a new Web Part Zone to this page. Web Part Zones must be defined at the time a Web Part Page is created.
Any help would be appreciated :)
Then I want to add a WebPart in the previously created WebPartZone. This step also works fine.
The problem is when a postback occurs on the page.
My docks contains the WebPart initially created, and a new one! At every postback, the dock contains a new WebPart...
Here is the code that adds the WebPart:
public class CustomRadDock : RadDock { #region Overrides protected override void OnInit(EventArgs e) { base.OnInit(e); this.EnsureChildControls(); } protected override void CreateChildControls() { base.CreateChildControls(); WebPartZone wpZone = new WebPartZone(); wpZone.ID = String.Format("{0}_webPartZone", this.ID); wpZone.PartChromeType = System.Web.UI.WebControls.WebParts.PartChromeType.TitleOnly; this.ContentContainer.Controls.Add(wpZone); LoadWebPart("myname"); } #endregion Overrides #region Methods private void LoadWebPart(String webPartName_) { _log.Info("Adding WebPart to dock"); using (SPSite site = new SPSite("mysite")) { SPWeb web = site.RootWeb; SPFile page = web.GetFile("mypage"); web.AllowUnsafeUpdates = true; web.Update(); using (SPLimitedWebPartManager wpmgr = page.GetLimitedWebPartManager(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)) { XmlElement p = new XmlDocument().CreateElement("p"); p.InnerText = "Hello World"; ContentEditorWebPart cewp = new ContentEditorWebPart(); cewp.Content = p; wpmgr.AddWebPart(cewp, String.Format("{0}_webPartZone", this.ID), 0); wpmgr.SaveChanges(cewp); } web.AllowUnsafeUpdates = false; web.Update(); } } #endregion MethodsLet me know if you need further information.
And if you have any solution of course!