2010-09-20 54 views
0

我试图从一个页面复制docklayout并尝试在另一个页面中重新创建它。将整个telerik docklayout从一个页面复制到另一个页面

这里是我的代码 -

Default.aspx的

<div> 
<telerik:RadDockLayout ID="dockLayout" runat="server" OnSaveDockLayout="dockLayout_SaveDockLayout"> 
<telerik:RadDockZone ID="dockZone" runat="server"> 
<telerik:RadDock ID="dock" runat="server" UniqueName="dock1"> 
<Commands> 
</Commands> 
<ContentTemplate> 
<asp:TextBox ID="txtName" runat="server" Text="Dock1"></asp:TextBox> 
<br /> 
<asp:Button ID="btnOK" runat="server" Text="OK1" /> 
</ContentTemplate> 
</telerik:RadDock> 
</telerik:RadDockZone> 
<br /><br /> 
<telerik:RadDockZone ID="RadDockZone1" runat="server"> 
<telerik:RadDock ID="RadDock1" runat="server" UniqueName="dock2"> 
<Commands> 
</Commands> 
<ContentTemplate> 
<asp:TextBox ID="TextBox1" runat="server" Text="Dock2"></asp:TextBox> 
<br /> 
<asp:Button ID="Button1" runat="server" Text="OK2" /> 
</ContentTemplate> 
</telerik:RadDock> 
</telerik:RadDockZone> 
</telerik:RadDockLayout> 
<div style="width:100%;text-align:center"> 
<asp:Button ID="btnSave" runat="server" Text="Save" onclick="btnSave_Click" /> 
</div> 
</div> 

Default.aspx.cs

protected void dockLayout_SaveDockLayout(object sender, DockLayoutEventArgs e) 
{ 
    List<DockState> dockState = dockLayout.GetRegisteredDocksState(); 
    JavaScriptSerializer ser = new JavaScriptSerializer(); 
    Session["dock"] = ser.Serialize(dockState); 
} 

protected void btnSave_Click(object sender, EventArgs e) 
{ 
    Response.Redirect("receivingPage.aspx"); 
} 

receivingPage.aspx.cs

public partial class receivingPage : System.Web.UI.Page 
{ 
    private List<DockState> dockStates; 
    private RadDockLayout dockLayout; 

    protected override void OnInit(EventArgs e) 
    { 
     dockLayout = new RadDockLayout(); 
     dockLayout.LoadDockLayout += new DockLayoutEventHandler(dockLayout_LoadDockLayout); 
     JavaScriptSerializer ser = new JavaScriptSerializer(); 
     dockStates = ser.Deserialize<List<DockState>>(Page.Session["dock"].ToString()); 
     for (int i = 0; i < dockStates.Count; i++) 
     { 
      RadDock dock = new RadDock(); 
      dock.ID = string.Format("RadDock{0}", i); 
      dock.ApplyState(dockStates[i]); 
      dockLayout.Controls.Add(dock); 
     } 
     this.Controls.Add(dockLayout); 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    void dockLayout_LoadDockLayout(object sender, DockLayoutEventArgs e) 
    { 
     foreach (DockState state in dockStates) 
     { 
      e.Positions[state.UniqueName] = state.DockZoneID; 
      e.Indices[state.UniqueName] = state.Index; 
     } 
    }  
} 

但我在receivingPage.aspx中获取了emtpy docklayout。有任何想法吗?

回答

0

我建议通过论坛联系Telerik或发送一个支持票与示例项目。

+0

我已经做到了:) – NLV 2010-10-01 14:02:19

相关问题