【问题标题】:Dynamic adding controls during OnLoad or OnInit?在 OnLoad 或 OnInit 期间动态添加控件?
【发布时间】:2010-09-17 02:53:36
【问题描述】:

我想根据某些特定条件向页面添加更多控件。这些控件不需要任何 ViewState 或绑定数据,它就像静态链接一样简单。 我想知道我可以在哪里编写代码:在OnLoad 或OnInit 方法内?为什么?如果我将它放在OnLoad 中,是否应该在任何初始化代码之前添加以下行:if (IsPostBack) return;?

【问题讨论】:

    标签: asp.net controls


    【解决方案1】:

    您可以在 OnInit 方法或 OnLoad 中添加控件,无论它们是否需要视图状态。 (原因是因为一旦您将控件添加到 Page 控件就会加载其视图状态,即使您在 LoadViewState 阶段之后添加它也是如此......)

    我是否应该在任何初始化代码之前添加以下行:if (IsPostBack) return;?

    没有。必须在每次页面加载时将动态添加的控件添加到控件层次结构中,而不仅仅是初始页面。

    如果您打算使用动态添加的 Web 控件,我强烈建议您阅读以下两篇文章:

    有关基于某些外部条件(例如数据库中的配置)动态加载控件的工作的端到端示例,请参阅Creating a Dynamic Data-Driven User Interface。

    编程愉快!

    【讨论】:

    • AFAIK,要填充静态控件,如果相关代码在Page_Load 中,则只需在初始页面加载时填充。但是,如果代码在 OnInit 中,则需要在每次页面加载时进行填充。
    【解决方案2】:

    我建议将控件静态添加到页面,并在满足条件时将其可见性切换为“真”。当它们不可见时,它们不会向页面呈现任何内容,这将为您省去很多麻烦,尤其是因为听起来您对动态控件还很陌生。

    【讨论】:

      【解决方案3】:

      我不确定我是否完全理解,但我会亲自在页面上放置一个 asp:Literal(或多个,如果您在不同的地方需要它们),然后在 OnLoad 事件中创建您需要的 HTML。

      如果你这样做,那么你放入该文字的 html 将保存在视图状态中,因此你不会在回发时重做它。

      【讨论】:

        【解决方案4】:

        http://chetanwarade.wordpress.com/2010/08/21/asp-net-add-dynamic-control-and-retrieve-dynamic-control-value-2/ 这是演示如何添加动态控件和检索动态控件值的代码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-03-06
          • 1970-01-01
          • 1970-01-01
          • 2011-01-26
          • 1970-01-01
          • 2012-11-08
          • 1970-01-01
          相关资源
          最近更新 更多