在我的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>
如何以编程方式创建此项,以便将其添加到页面中?
答案 0 :(得分:0)
您可以将Control.Init
事件连接起来以创建所需的控件(在这种情况下为LanguageBar
),然后按照您希望的顺序将它们添加到Control.Controls
集合中出现。
然后,您将设置属性,并将相应的集合添加到LanguageBar对象本身中。将有各种模板的成员属性;你必须要特别了解控件的API,但是一旦你习惯它就应该相当简单。
要记住的重要一点是,必须在控件的每个负载上重新创建这些控件 - 无论是否回发。您可能希望控制级变量保存您希望直接插入到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