如何以编程方式创建模板布局部分?
问题描述:
在我的ascx标记,我有下面的代码,我想移动到后台代码:如何以编程方式创建模板布局部分?
<fs3:LanguageBar CssClass="setIn" ID="languageBar" PostBack="True" runat="server">
<LayoutTemplate>
<fs3:LanguageList ID="languageList" runat="server" CssClass="setIn">
<ItemTemplate>
<asp:HyperLink ID="listItem" CssClass="emptyLang" runat="server" />
</ItemTemplate>
<CurrentItemTemplate>
<asp:Label ID="listItem" CssClass="currentLang" runat="server" />
</CurrentItemTemplate>
<SelectedItemTemplate>
<asp:HyperLink ID="listItem" CssClass="filledLang" runat="server" />
</SelectedItemTemplate>
</fs3:LanguageList>
</LayoutTemplate>
</fs3:LanguageBar>
如何创建这个程序,所以我可以将它添加到页面?
答
您可以连接Control.Init
事件来创建所需的控件(在本例中为LanguageBar
),然后按希望显示的顺序将它们添加到Control.Controls
集合中。
然后,您可以设置属性,并将合适的集合添加到LanguageBar对象本身中。会有各种模板的成员属性;你不得不专门学习控件的API,但是一旦习惯它,它应该是相当简单的。
要记住的重要一点是,您必须在控件的每次加载时重新创建这些控件 - 无论是否回发。您可能需要一个Control级别的变量来保存您希望直接插入到ascx控件本身的控件,以便您可以在ascx控件的Load和其他事件中引用它。
对模板的使用本身是更复杂一点,但这里的一些信息,让你沿着这些线路一般开始:
http://iridescence.no/post/Using-Templated-Controls-Programmatically.aspx
http://forums.asp.net/p/1589688/4026373.aspx
http://msdn.microsoft.com/en-us/library/aa289501%28VS.71%29.aspx