Hi,
I have a RadDockLayout control with 2 zones and 4 dock and I want to remember the positions and states of the docks. The Built-In Dock State Persistence works for me (other examples change the size of the docks when loading).
However, I would like to implement a 'Reset Layout' button. How do you clear the built-in dock states?
Thanks in advance,
Matt
I have a RadDockLayout control with 2 zones and 4 dock and I want to remember the positions and states of the docks. The Built-In Dock State Persistence works for me (other examples change the size of the docks when loading).
However, I would like to implement a 'Reset Layout' button. How do you clear the built-in dock states?
Thanks in advance,
Matt
3 Answers, 1 is accepted
0
Accepted
Hi,
You can clear the dock state by deleting the information from the data repository that you chose via the LayoutPersistenceRepositoryType property of RadDockLayout.
The dock state can be in a cookie with a key that matches the value of RadDockLayout's LayoutRepositoryID property if you have set LayoutPersistenceRepositoryType=Cookies; in a file that is located in the App_Data folder of the application if you have set LayoutPersistenceRepositoryType=FileSystem; or in a data repository of your choosing if LayoutPersistenceRepositoryType=Custom.
You can check the following article for more information about how the dock state is stored in different repository types, so that you ca find it and clear it: http://www.telerik.com/help/aspnet-ajax/dock-built-in-state-persistence.html
Regards,
Slav
Telerik
You can clear the dock state by deleting the information from the data repository that you chose via the LayoutPersistenceRepositoryType property of RadDockLayout.
The dock state can be in a cookie with a key that matches the value of RadDockLayout's LayoutRepositoryID property if you have set LayoutPersistenceRepositoryType=Cookies; in a file that is located in the App_Data folder of the application if you have set LayoutPersistenceRepositoryType=FileSystem; or in a data repository of your choosing if LayoutPersistenceRepositoryType=Custom.
You can check the following article for more information about how the dock state is stored in different repository types, so that you ca find it and clear it: http://www.telerik.com/help/aspnet-ajax/dock-built-in-state-persistence.html
Regards,
Slav
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.
0
Matt
Top achievements
Rank 1
answered on 29 Aug 2014, 03:59 PM
Hi Slav.
Thanks for your reply. So I made the following changes;
.aspx
.cs
This works, however I had to abandon the session to get the full effect of clearing the cookie. Abandoning the session badly effects my web app :(
Thanks again,
Matt
Thanks for your reply. So I made the following changes;
.aspx
<telerik:RadButton ID="btnRestLayout" runat="server" Text="Reset Layout" OnClick="btnRestLayout_Click" /> <telerik:RadDockLayout ID="radDockLayout" runat="server" EnableLayoutPersistence="true" LayoutPersistenceRepositoryType="Cookies" LayoutRepositoryID="DockLayoutSettings">...</telerik:RadDockLayout>.cs
protected void btnRestLayout_Click(object sender, System.EventArgs e) { if (Request.Cookies[radDockLayout.LayoutRepositoryID] != null) { HttpCookie myCookie = new HttpCookie(radDockLayout.LayoutRepositoryID) { Expires = DateTime.Now.AddDays(-1d) }; Response.Cookies.Add(myCookie); HttpContext.Current.Session.Abandon(); } }This works, however I had to abandon the session to get the full effect of clearing the cookie. Abandoning the session badly effects my web app :(
Thanks again,
Matt
0
Hi Matt,
Generally the state of the RadDockLayout is saved in the SaveStateComplete event, so that in order to delete the repository cookie/file you must do that after the saving. This can be done for example by attaching to the SaveStateComplete event from a button click as follows:
ASPX:
C#:
You can also use this approach for LayoutPersistenceRepositoryType="FileSystem". The full runnable VS example on this regard can be found in the attached archive.
Regards,
Danail Vasilev
Telerik
Generally the state of the RadDockLayout is saved in the SaveStateComplete event, so that in order to delete the repository cookie/file you must do that after the saving. This can be done for example by attaching to the SaveStateComplete event from a button click as follows:
ASPX:
<telerik:RadScriptManager runat="server" ID="RadScriptManager1" /><asp:Button runat="server" ID="ButtonPostback" Text="Save State"></asp:Button><telerik:RadButton ID="RadButton1" runat="server" Text="Clear State" OnClick="Button1_Click" /><br /><br /><telerik:RadDockLayout runat="server" ID="RadDockLayout1" EnableLayoutPersistence="true" LayoutPersistenceRepositoryType="Cookies" LayoutRepositoryID="DockLayout"> <telerik:RadDockZone runat="server" ID="RadDockZone1" Width="300" MinHeight="200" Style="float: left; margin-right: 20px;"> <telerik:RadDock runat="server" ID="RadDock1" Title="RadDock 1" Width="300" Height="100"> </telerik:RadDock> </telerik:RadDockZone> <telerik:RadDockZone Width="300" MinHeight="200" runat="server" ID="RadDockZone2" Style="float: left;"> <telerik:RadDock runat="server" ID="RadDock2" Title="RadDock 2" Width="300" Height="100"> </telerik:RadDock> </telerik:RadDockZone> <br class="qsf-clear-float" /></telerik:RadDockLayout>C#:
protected void ClearState(object sender, EventArgs e){ if (Request.Cookies[RadDockLayout1.LayoutRepositoryID] != null) { HttpCookie myCookie = new HttpCookie(RadDockLayout1.LayoutRepositoryID) { Expires = DateTime.Now.AddDays(-1d) }; Response.Cookies.Add(myCookie); } //LayoutPersistenceRepositoryType="FileSystem" : //System.IO.File.Delete(Server.MapPath("~/App_Data/DockLayout"));}protected void Button1_Click(object sender, EventArgs e){ Page.SaveStateComplete += ClearState;}You can also use this approach for LayoutPersistenceRepositoryType="FileSystem". The full runnable VS example on this regard can be found in the attached archive.
Regards,
Danail Vasilev
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.