2013-04-08 57 views
0

我已經創建了一個基於RadDock控件的模板ASP.NET用戶控件。但是,將這樣的控件添加到RadDockZone會導致運行時錯誤,指出它只能包含RadDock控件。有什麼辦法可以解決這個問題嗎?RadDockZone內的模板RadDock控件?

模板化的用戶控制標記

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TemplatedDock.ascx.cs" Inherits="TemplatedDock" %> 
<telerik:RadDock ID="RadDock1" runat="server" EnableAnimation="True" DockHandle="Grip"  Resizable="True"> 
    <ContentTemplate> 
     <asp:PlaceHolder ID="dockPlaceholder" runat="server"></asp:PlaceHolder> 
    </ContentTemplate> 
</telerik:RadDock> 

模板化的用戶控制隱藏代碼

public partial class TemplatedDock : System.Web.UI.UserControl 
{ 
    private ITemplate _content; 

    [TemplateContainer(typeof(ContentContainer))] 
    [PersistenceMode(PersistenceMode.InnerProperty)] 
    [TemplateInstance(TemplateInstance.Single)] 
    public ITemplate Content 
    { 
     get 
     { 
      return _content; 
     } 
     set 
     { 
      _content = value; 
     } 
    } 
    void Page_Init() 
    { 
     if (_content != null) 
     { 
      ContentContainer container = new ContentContainer(); 
      _content.InstantiateIn(container); 
      dockPlaceholder.Controls.Add(container); 
     } 
    } 
} 
public class ContentContainer : Control, INamingContainer{} 

}

用法在RadDockZone

<telerik:RadDockZone ID="RadDockZone1" runat="server"> 
    <a:TemplatedDock> 
     <Content> 
      <telerik:RadGrid ID="someGrid" runat="server"></telerik:RadGrid> 
     </Content> 
    </a:TemplatedDock> 
</telerik:RadDockZone> 

回答

0

這種情況沒有辦法發生。 RadDockZone必須只有RadDock控件作爲子項。自定義控件有不同的類型,因此會拋出異常。 該區域與碼頭緊密結合以提供簡單的集成,如拖放,狀態保存等,並且具有價格。