2010-11-13 71 views
1

在我的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

您可以连接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