如何获取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; 

但没有运气,每次我都无效。

绑定并提供页面后,您无法检索数据源。 您可以使用几种方法来保留数据源:

  1. Session绑定之前存储数据
  2. 在绑定到ViewState之前存储数据
  3. 从数据库或从最初检索它的任何数据存储中获取数据。
  4. 保持存储在其他地方的持续缓存(例如SessionViewState等)

我宁愿远离拖放数据源和绑定数据的使用。

因此,在您的情况下,将列表存储在可访问的位置,并在您进行操作时对其进行操作并每次重新绑定。 然后,当您想要执行“保存”时,您只需处理已存储并用于定义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就会消失。 您需要重新创建数据源并使用主键访问特定对象。