在OnLoad或OnInit期间动态添加控件?

时间:2010-09-17 02:53:36

标签: asp.net controls

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

4 个答案:

答案 0 :(得分:6)

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

  

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

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

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

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

快乐编程!

答案 1 :(得分:1)

我建议只是静态地将控件添加到页面,并在满足条件时将其可见性切换为“True”。当它们不可见时,它们不会向页面呈现任何内容,这将为您节省很多麻烦,特别是因为它听起来像是动态控件的新手。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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