我在我的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;
但是没有运气,每次我都无效。
答案 0 :(得分:7)
一旦绑定并提供页面,您就无法检索数据源。您可以使用几种方法来保留数据源:
Session
ViewState
Session
,ViewState
等)我宁愿远离拖放数据源和绑定数据的使用。
因此,在您的情况下,将列表存储在可访问的位置,并在您进行操作时对其进行操作并每次重新绑定。然后,当您想要执行“保存”时,您可以只处理已存储并用于定义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就消失了。您需要重新创建数据源并使用主键访问特定对象。