如何获取Gridview底层数据源?

时间:2011-03-02 18:36:24

标签: c# asp.net gridview

我在我的asp.net Web应用程序框架3.5下有gridview。我正在使用List绑定gridview。在网格内部有更新和删除功能,运行正常。但我的保存功能,我决定从数据源中提取列表,然后通过循环我将新列表插入数据库。但是,当我试图以传统的方式使用时,它将我归还。

我尝试了以下方法来检索List。

1. List<MyClass> list = (List<MyClass>gv.DataSource);
2. List<MyClass> list = gv.DataSource as List<MyClass>;
3. IDataSource idt = (IDataSource)gv.Datasource;
   List<MyClass> list = (List<MyClass>)idt;

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

3 个答案:

答案 0 :(得分:7)

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

  1. Session
  2. 中绑定之前存储数据
  3. ViewState
  4. 中绑定之前存储数据
  5. 从数据库或从最初检索它的任何数据存储中获取数据。
  6. 保持对其他地方存储的更改的持续缓存(例如SessionViewState等)
  7. 我宁愿远离拖放数据源和绑定数据的使用。

    因此,在您的情况下,将列表存储在可访问的位置,并在您进行操作时对其进行操作并每次重新绑定。然后,当您想要执行“保存”时,您可以只处理已存储并用于定义GUI的基础数据对象(List)。 GridView不是数据存储区,只是基于数据存储来显示数据的控件。

答案 1 :(得分:3)

您可以浏览gridview的所有项目,并将所有项目添加回您创建的新列表。

我使用的是这样的东西:

List<Categories> myList = new List<Categories>();
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);
}

这个问题发布已经有一段时间了,但我希望这对某人有帮助。

答案 2 :(得分:0)

绑定列表并显示网页后,DataSource就消失了。您需要重新创建数据源并使用主键访问特定对象。