丢失控制事件的动态控制值的解决方案

时间:2013-02-22 11:17:26

标签: c# asp.net dynamic-controls

我有一个gridview,我在其中动态填充下拉列表。这些下拉列表中填充了数据库中的数据,因此,gridview的列数和行数以及下拉控件数预先未知。 (我正在使用继承ITemplate的ItemTemplate类来创建动态下拉列。)

我能够正确显示数据,但当我尝试将gridview的更改值保存到数据库时出现问题。

我在gridview外面有一个按钮,这样当用户点击它时,任何保存的数据都应该在数据库中更新。但是在按钮单击事件中,我无法访问下拉列表的值,因为动态内容在回发和任何其他控件事件上都会丢失。

有人可以指导我找到解决方案吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

研究ASP .NET page life-cycle,您会发现需要在 OnInit 中创建动态控件,这是 PreInit的事件,否则它们将无法在 Page_Load

上使用

答案 1 :(得分:0)

您必须在OnInit事件中创建动态控件,因为当OnLoad命中时,viewstate已经全部填充,并且您新创建的控件未使用来自viewstate的数据进行更新。

这是一篇关于viewstate的好文章:

http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx