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

时间:2010-11-13 23:08:20

标签: c# .net asp.net .net-3.5

在我的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 个答案:

答案 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