c# - 如何获取 Gridview 底层数据源?

标签 c# asp.net gridview

我在框架 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)并提供页面,您就无法检索数据源。不过,您可以使用几种方法来保留数据源:

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

不过,我更愿意远离数据源和绑定(bind)数据的拖放使用。

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

关于c# - 如何获取 Gridview 底层数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5171816/

相关文章:

javascript - 将表格设置为在 Javascript 期间不会改变的某个位置

c# - asp :GridView 中 ItemTemplate 的点击事件

c# - 如果 GetFields() 不能保证顺序,LayoutKind.Sequential 如何工作

asp.net - Visual Studio 2017 连接字符串无法连接到服务器

c# - .NET 中的网络编程

asp.net - 自动刷新图像(无 javascript、flash、silverlight)

asp.net - asp.net gridview 列的超链接 url

asp.net - 有哪些 ASP.NET GridView 性能改进机会?

c# - 清除页面中的所有单选按钮

c# - 表没有得到更新,当使用 executeNonquery