2012-01-28 60 views
0

我想要創建自定義模板控件,它控制模板coluld內部的頁面(類似於updatepanel的行爲)。所以,更詳細地問題。 控制有看起來像:在asp.net中創建自定義模板控件

<ec:TabControl runat="server" ID="tab"> 
    <Tabs> 
     <ec:Tab runat="server"> 
      <TabContainer> 
       <asp:Button runat="server" Text="aaaaaa" /> 
      </TabContainer> 
      <TabName> 
       text or controls 
      </TabName> 
     </ec:Tab> 
     <ec:Tab runat="server"> 
      <TabContainer> 
       <asp:Button runat="server" Text="vcxvxvxv" /> 
      </TabContainer> 
      <TabName> 
       some text 
      </TabName> 
     </ec:Tab> 
    </Tabs> 
</ec:TabControl> 

它運作良好,在方式數據綁定控件運行。換句話說,在ondatabound階段,所有內部控件和模板都可以適當地實例化。 但我想要的是有權訪問控件內部和直接從頁面(通過ID)。例如,您可以使用updatepanel(頁面範圍內的內容)來執行此操作。

下面你可以看到控制的源代碼片段:

public class Tab 
{ 
    [PersistenceMode(PersistenceMode.InnerProperty)] 
    [TemplateContainer(typeof(HtmlAnchorContainer))] 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
    public ITemplate TabName { get; set; } 

    [PersistenceMode(PersistenceMode.InnerProperty)] 
    [TemplateContainer(typeof(PanelContainer))] 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
    public ITemplate TabContainer { get; set; } 
} 

public class TabControl : System.Web.UI.WebControls.WebControl 
{ 
    List<Tab> tabs; 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), 
    PersistenceMode(PersistenceMode.InnerProperty), 
    NotifyParentProperty(true)] 
    public List<Tab> Tabs 
    { 
     get { return tabs ?? new List<Tab>(); } 
     set { tabs = value; } 
    } 

    protected override void CreateChildControls() 
    { 
     base.CreateChildControls(); 
     ..... 
     foreach (Tab tabItem in Tabs) 
     { 
      //generating tree control for further rendering 
     } 
     ... 
    } 

    protected override void OnDataBinding(EventArgs e) 
    { 
     EnsureChildControls(); 
     base.OnDataBinding(e); 
    } 
} 

希望對你意見,建議,鏈接和建設性的批評))

回答

0

套用:

[TemplateInstance(TemplateInstance.Single)] 

聲明到你想要直接引用控件的模板,那麼應該解決這個問題。

+0

謝謝。我看了一下,看來,這就是我一直在尋找的東西。 – DotNetter 2012-01-28 21:53:42