Hi,
I'm currently using 5 RadDocks placed in a RadDockZone. They are declared in the front code and I use code-behind functions to save and load their state when needed.
Right now, if I move dock A atop of dock B, dock A stays behind dock B (assuming dock B started with a higher zIndex). What I would like, is having a dock being moved over another dock to get in front of it. Actually, even just clicking on a dock (more exactly on its title bar) should "bring it to front".
Additionally, this order needs to be saved/loaded just like the dock state.
Is there an (easy) way to accomplish this (client-side preferred of course)?
You'll find below code relevant to the save/load processes as well as the docks declaration.
Thanks in advance,
Nicolas
I'm currently using 5 RadDocks placed in a RadDockZone. They are declared in the front code and I use code-behind functions to save and load their state when needed.
Right now, if I move dock A atop of dock B, dock A stays behind dock B (assuming dock B started with a higher zIndex). What I would like, is having a dock being moved over another dock to get in front of it. Actually, even just clicking on a dock (more exactly on its title bar) should "bring it to front".
Additionally, this order needs to be saved/loaded just like the dock state.
Is there an (easy) way to accomplish this (client-side preferred of course)?
You'll find below code relevant to the save/load processes as well as the docks declaration.
Thanks in advance,
Nicolas
| Protected Sub SaveDockLayout() |
| Dim tConnection As New SqlConnection(ConfigurationManager.ConnectionStrings("Infinis_Connection").ConnectionString) |
| Dim tDockState As String |
| Dim tSerializer As New Script.Serialization.JavaScriptSerializer() |
| Dim tConverters As New List(Of Script.Serialization.JavaScriptConverter)() |
| tConverters.Add(New UnitConverter()) |
| tSerializer.RegisterConverters(tConverters) |
| Dim tStateList As List(Of DockState) = docks_DockLayout.GetRegisteredDocksState() |
| Dim tSerializedList As New StringBuilder() |
| Dim i As Integer = 0 |
| While i < tStateList.Count |
| tSerializedList.Append(tSerializer.Serialize(tStateList(i))) |
| tSerializedList.Append("|") |
| System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1) |
| End While |
| tDockState = tSerializedList.ToString() |
| If tDockState.Trim() <> [String].Empty Then |
| Try |
| tConnection.Open() |
| Dim tCommand As New SqlCommand([String].Format("UPDATE SystemUser set DocksPosition='{0}' WHERE RecId = {1}", tDockState, Session("CurrentSession_UserId")), tConnection) |
| tCommand.ExecuteNonQuery() |
| tConnection.Close() |
| Catch |
| End Try |
| End If |
| End Sub |
| Protected Sub LoadDockLayout() |
| Dim tConnection As New SqlConnection(ConfigurationManager.ConnectionStrings("Infinis_Connection").ConnectionString) |
| Dim tDock As RadDock = Nothing |
| Dim tSerializer As New Script.Serialization.JavaScriptSerializer() |
| Dim tConverters As New List(Of Script.Serialization.JavaScriptConverter)() |
| tConverters.Add(New UnitConverter()) |
| tSerializer.RegisterConverters(tConverters) |
| 'Get saved state string from the database - set it to dockState variable for example |
| Dim tDockState As String = "" |
| Try |
| tConnection.Open() |
| Dim tCommand As New SqlCommand("SELECT DocksPosition FROM SystemUser WHERE RecId = @RecId", tConnection) |
| tCommand.Parameters.AddWithValue("RecId", Session("CurrentSession_UserId")) |
| tDockState = tCommand.ExecuteScalar().ToString() |
| tConnection.Close() |
| Catch |
| End Try |
| Dim tCurrentDockStates As String() = tDockState.Split("|"c) |
| For Each tStringState As String In tCurrentDockStates |
| If tStringState.Trim() <> String.Empty Then |
| Dim tState As DockState = tSerializer.Deserialize(Of DockState)(tStringState) |
| tDock = DirectCast(docks_DockLayout.FindControl(tState.UniqueName), RadDock) |
| tDock.ApplyState(tState) |
| End If |
| Next |
| End Sub |
| <telerik:RadDockLayout runat="server" ID="docks_DockLayout" EnableViewState="false" StoreLayoutInViewState="false"> |
| <telerik:RadDockZone runat="server" ID="docks_Dockzone" Orientation="Vertical" MinWidth="300px" MinHeight="500px" Style="position:absolute; top:30px; left:0px;"> |
| <telerik:RadDock ID="dock_Product" runat="server" Width="300px" Height="200px" Top="200px" ExpandedHeight="200" |
| Left="200px" Title="Products" CssClass="style_DockPanels" Skin="Black" |
| Resizable="true" DefaultCommands="All" Closed="false" Collapsed="true" OnClientCommand="DockProduct_ClientCommand" > |
| <ContentTemplate> |
| <telerik:RadTreeView ID="tree_Product" Height="100%" Width="100%" runat="server" |
| OnNodeExpand="tree_NodeExpand" |
| ShowLineImages="true" |
| EnableDragAndDrop="true" |
| EnableDragAndDropBetweenNodes="false" |
| Skin="Black" |
| SingleExpandPath="true" |
| LoadingStatusPosition="AfterNodeText" |
| OnClientNodeDropping="Tree_NodeDropping" OnClientNodeDragStart="Tree_NodeDragStart" /> |
| </ContentTemplate> |
| </telerik:RadDock> |
| [there's 4 others just like that] |