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] |