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 Methods
Let me know if you need further information.
And if you have any solution of course!