Protected Sub RadDockLayout1_LoadDockLayout(ByVal sender As Object, ByVal e As Telerik.Web.UI.DockLayoutEventArgs)
'Get saved state string from the database - set it to dockState variable for example
Dim state As DockState = serializer.Deserialize(Of DockState)(stringState)
Dim dock As RadDock = RadDockLayout1.FindControl(state.UniqueName)
'Reset the non changeable dock properties
dockProjectOverview.Height = Unit.Pixel(400)
CreateSaveStateTrigger(dockProjectOverview)
dockBudgetOverview.Height = Unit.Pixel(375)
CreateSaveStateTrigger(dockBudgetOverview)
dockNotes.Height = Unit.Pixel(250)
CreateSaveStateTrigger(dockNotes)
dockTeamMembers.Height = Unit.Pixel(250)
CreateSaveStateTrigger(dockTeamMembers)
End Sub
Private Sub CreateSaveStateTrigger(ByVal dock As RadDock)
'Ensure that the RadDock control will initiate postback
' when its position changes on the client or any of the commands is clicked.
'Using the trigger we will "ajaxify" that postback.
dock.AutoPostBack = True
dock.CommandsAutoPostBack = True
Dim saveStateTrigger As New AsyncPostBackTrigger()
saveStateTrigger.ControlID = dock.ID
saveStateTrigger.EventName = "DockPositionChanged"
UpdatePanel1.Triggers.Add(saveStateTrigger)
saveStateTrigger = New AsyncPostBackTrigger()
saveStateTrigger.ControlID = dock.ID
saveStateTrigger.EventName = "Command"
UpdatePanel1.Triggers.Add(saveStateTrigger)
End Sub
And in the ASPX page i put this right at the end of the layout tags:
<div style="width: 0px; height: 0px; overflow: hidden; position: absolute; left: -10000px;">
Hidden UpdatePanel, which is used to help with saving state when minimizing, moving
and closing docks. This way the docks state is saved faster (no need to update the
docking zones).
<asp:UpdatePanel runat="server" ID="UpdatePanel1">
</asp:UpdatePanel>
</div>
Hope this helps -- ford