4 Answers, 1 is accepted
0
Obi-Wan Kenobi
Top achievements
Rank 1
answered on 20 Oct 2008, 10:27 AM
A simple example which illustrates how to save the state of dynamically created RadDocks via AJAX is available here:
http://demos.telerik.com/ASPNET/Prometheus/Dock/Examples/MyPortal/DefaultCS.aspx
http://demos.telerik.com/ASPNET/Prometheus/Dock/Examples/MyPortal/DefaultCS.aspx
0
Matt
Top achievements
Rank 1
answered on 20 Oct 2008, 10:51 AM
Sorry, but I'm having trouble getting it to work, I don't want to load docks dynamically, I just want their positions to be saved when they are moved, do you have a simple example to show this?
Thanks
Thanks
0
Obi-Wan Kenobi
Top achievements
Rank 1
answered on 21 Oct 2008, 01:45 PM
A simple example which illustrates how to save RadDock state on postback is available here:
http://demos.telerik.com/ASPNET/Prometheus/Dock/Examples/LoadSaveLayout/DefaultCS.aspx
To achieve your goal you should wrap the RadDockLayout with UpdatePanel and set RadDock.AutoPostback to true(position will be saved on each raddock move),e.g.
ASPX:
Codebehind:
http://demos.telerik.com/ASPNET/Prometheus/Dock/Examples/LoadSaveLayout/DefaultCS.aspx
To achieve your goal you should wrap the RadDockLayout with UpdatePanel and set RadDock.AutoPostback to true(position will be saved on each raddock move),e.g.
ASPX:
| <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml" > |
| <head id="Head1" runat="server"> |
| <title>Untitled Page</title> |
| </head> |
| <body> |
| <form id="form1" runat="server"> |
| <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> |
| <div> |
| <asp:UpdatePanel ID="UpdatePanel1" runat="server"> |
| <ContentTemplate> |
| <telerik:RadDockLayout ID="RadDockLayout1" runat="server" |
| OnLoadDockLayout="RadDockLayout1_LoadDockLayout" |
| OnSaveDockLayout="RadDockLayout1_SaveDockLayout" |
| > |
| <telerik:RadDockZone ID="RadDockZone1" runat="server"> |
| <telerik:RadDock ID="RadDock1" runat="server" Title="RadDock1" AutoPostBack="true"/> |
| <telerik:RadDock ID="RadDock2" runat="server" Title="RadDock2" AutoPostBack="true"/> |
| </telerik:RadDockZone> |
| <telerik:RadDockZone ID="RadDockZone2" runat="server"> |
| <telerik:RadDock ID="RadDock3" runat="server" Title="RadDock3" AutoPostBack="true"/> |
| </telerik:RadDockZone> |
| </telerik:RadDockLayout> |
| </ContentTemplate> |
| </asp:UpdatePanel> |
| </div> |
| </form> |
| </body> |
| </html> |
| protected void RadDockLayout1_SaveDockLayout(object sender, Telerik.Web.UI.DockLayoutEventArgs e) |
| { |
| // Store the positions in a cookie. Note, that if there are lots of dock objects on the page |
| // the cookie length might become insufficient. In this case it would be better to use the |
| // cookie to store a key from a database, where the positions will be actually stored. |
| // |
| // You can store the positions directly in a database and use the ID of the currently logged |
| // user as a key to his personalized positions. |
| JavaScriptSerializer serializer = new JavaScriptSerializer(); |
| string serializedPositions = serializer.Serialize(e.Positions); |
| string serializedIndices = serializer.Serialize(e.Indices); |
| HttpCookie positionsCookie = new HttpCookie("DockLayout", |
| serializer.Serialize(new string[] { serializedPositions, serializedIndices })); |
| //Ensure that the cookie will not expire soon |
| positionsCookie.Expires = DateTime.Now.AddYears(1); |
| Response.Cookies.Add(positionsCookie); |
| } |
| protected void RadDockLayout1_LoadDockLayout(object sender, Telerik.Web.UI.DockLayoutEventArgs e) |
| { |
| HttpCookie positionsCookie = Request.Cookies["DockLayout"]; |
| if (!Object.Equals(positionsCookie, null)) |
| { |
| string serializedPositionsAndIndices = positionsCookie.Value; |
| if (!string.IsNullOrEmpty(serializedPositionsAndIndices)) |
| { |
| JavaScriptSerializer serializer = new JavaScriptSerializer(); |
| string[] positionsAndIndices = serializer.Deserialize<string[]>(serializedPositionsAndIndices); |
| e.Positions = serializer.Deserialize<Dictionary<string, string>>(positionsAndIndices[0]); |
| e.Indices = serializer.Deserialize<Dictionary<string, int>>(positionsAndIndices[1]); |
| } |
| } |
| } |
0
Matt
Top achievements
Rank 1
answered on 21 Oct 2008, 01:49 PM
That works great, thankyou