如何获取Gridview底层数据源?
我在我的asp.net Web应用程序框架3.5下有gridview。 我正在使用List绑定gridview。 在网格内部有更新和删除function,运行正常。 但我的保存function,我决定从数据源中提取列表然后通过循环我将新列表插入数据库。 但是,当我试图以传统方式获得它时,它让我无效。
我尝试了以下方法来检索List。
1. List list = (Listgv.DataSource); 2. List list = gv.DataSource as List; 3. IDataSource idt = (IDataSource)gv.Datasource; List list = (List)idt;
但没有运气,每次我都无效。
绑定并提供页面后,您无法检索数据源。 您可以使用几种方法来保留数据源:
- 在
Session
绑定之前存储数据 - 在绑定到
ViewState
之前存储数据 - 从数据库或从最初检索它的任何数据存储中获取数据。
- 保持存储在其他地方的持续缓存(例如
Session
,ViewState
等)
我宁愿远离拖放数据源和绑定数据的使用。
因此,在您的情况下,将列表存储在可访问的位置,并在您进行操作时对其进行操作并每次重新绑定。 然后,当您想要执行“保存”时,您只需处理已存储并用于定义GUI的基础数据对象( List
)。 GridView
不是数据存储区,只是一个基于数据存储来显示数据的控件。
您可以浏览gridview的所有项目,并将所有项目添加回您创建的新列表。
这样的东西就是我用的东西:
List myList = new List (); foreach (GridViewRow row in grdCategory.Rows) { Categories newCat = new Categories(); Label catID = row.FindControl("lblCatID") as Label; newCat.catID = Convert.ToInt32(catID.Text); ... ... myList.Add(newCat); }
自问题发布以来已经有一段时间了,但我希望这对某人有所帮助。
绑定列表并显示网页后,DataSource就会消失。 您需要重新创建数据源并使用主键访问特定对象。