代码之家  ›  专栏  ›  技术社区  ›  TruMan1

如何以编程方式创建模板布局节?

  •  1
  • TruMan1  · 技术社区  · 14 年前

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

    如何以编程方式创建此项以便将其添加到页面中?

    1 回复  |  直到 14 年前
        1
  •  0
  •   Andrew Barber Mike Nilson    14 年前

    你可以把 Control.Init 事件来创建所需的控件(您的 LanguageBar 在本例中),然后将它们添加到 Control.Controls 按您希望它们出现的顺序收集。

    然后,设置属性,并将属于LanguageBar对象本身的内容添加到适当的集合中。将有各种模板的成员属性;您必须具体了解控件的API,但是一旦您习惯了它,它应该相当简单。

    要记住的重要一点是,必须在控件的每个负载上重新创建这些控件—无论是否回发。您可能需要一个控制级变量来保存希望直接插入到ascx控件本身的控件,以便您可以在ascx控件的加载和其他事件中引用它。

    模板本身的工作要复杂一些,但这里有一些信息可以让您大致了解这些内容:

    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