RadydockZone内部的模板化RadDock控件?

时间:2013-04-08 11:41:48

标签: asp.net telerik rad-controls

我已经基于RadDock控件创建了一个模板化的ASP.NET用户控件。但是,将此类控件添加到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>

1 个答案:

答案 0 :(得分:0)

没有办法实现这一点。 RadDockZone必须只有RadDock控件作为子项。自定义控件具有不同的类型,因此会抛出异常。 该区域与底座紧密耦合,提供轻松集成,如拖放,状态保存等,这有其代价。