【问题标题】:How to create template layout section programmatically?如何以编程方式创建模板布局部分?
【发布时间】:2010-11-13 23:08:19
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    您将连接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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-17
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 2017-12-25
      相关资源
      最近更新 更多