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

本文关键字:解决方案 动态控制 事件 控制 | 更新日期: 2023-09-27 18:00:47

我有一个网格视图,可以在其中动态填充下拉列表。这些下拉列表中充满了数据库中的数据,因此网格视图的列和行数以及下拉控件的数量事先都不知道。(我使用的是ItemTemplate类,它继承了ITemplate来创建动态下拉列)。

我能够正确显示数据,但当我试图将网格视图的更改值保存到数据库时,问题就来了。

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

有人能告诉我解决这个问题的办法吗?

提前感谢

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

研究ASP.NET页面生命周期,您会发现您需要在OnInit中创建动态控件,这是PreInit的事件,否则它们将无法在Page_Load等上使用。

您必须在OnInit事件中创建动态控件,因为当OnLoad命中时,视图状态已全部填充就绪,并且新创建的控件不会用视图状态中的数据更新。

这里有一篇关于viewstate的好文章:

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