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);
}
}
希望對你意見,建議,鏈接和建設性的批評))
謝謝。我看了一下,看來,這就是我一直在尋找的東西。 – DotNetter 2012-01-28 21:53:42