我在框架 3.5 下的 asp.net web 应用程序中有 gridview。我将 gridview 与 List 绑定(bind)在一起。在网格内部有运行良好的更新和删除功能。但是我的保存功能,为此我决定从数据源中提取列表,然后通过循环将新列表插入数据库。但是当我尝试以常规方式获取它时,它返回了 null。
我尝试了以下方法来取回列表。
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;
但没有运气,每次我都为空。
最佳答案
一旦绑定(bind)并提供页面,您就无法检索数据源。不过,您可以使用几种方法来保留数据源:
- 在
Session
中存储绑定(bind)前的数据 - 将绑定(bind)前的数据存储在
ViewState
中
- 从数据库或您最初从中检索数据的任何数据存储中获取数据。
- 在其他地方(例如
Session
、ViewState
等)保持持续的更改缓存
不过,我更愿意远离数据源和绑定(bind)数据的拖放使用。
因此,在您的情况下,将列表存储在可访问的位置,并在您进行操作时对其进行操作并每次重新绑定(bind)它。然后,当您想要“保存”时,您只需处理已存储并用于定义 GUI 的基础数据对象 (List
)。 GridView
不是数据存储,只是基于数据存储呈现数据的控件。
关于c# - 如何获取 Gridview 底层数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5171816/