【问题标题】:How to fill a dataset after getting a gridview?获取gridview后如何填充数据集?
【发布时间】:2010-12-26 15:09:40
【问题描述】:
我有一个 gridview,它有很多列。这些列是单独获取并显示在 gridview 中的。
现在我需要对这个 gridview 进行排序,但我不能这样做....我找到了一种方法,但我需要在数据表或数据集中获取 gridview....有没有办法做到这一点?
DataSet ds= new DataSet();
ds = Gridview1.????
请帮忙..
【问题讨论】:
标签:
c#
asp.net
gridview
sorting
dataset
【解决方案1】:
一种方法是使用 DataGridView 并使用该控件的 DataSource 属性:
OleDbConnection conn = new OleDbConnection(connection);
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand("select * from my_table", conn);
DataSet dataset = new DataSet();
// fill the data set using the query defined in the adapter
adapter.Fill(dataset);
// fill the grid with the data set
DataGridView1.DataSource = dataset.Tables[0];
【解决方案2】:
您可以创建一个新类来表示表中的每一行,并绑定到该类的对象列表。然后要修复排序,您可以将数据源包装在SortableBindingList 中。您可以使用 zip file 中的文件 PropertyComparer.cs 和 SortableBindingList.cs 并像这样使用它:
gridView1.DataSource = new SortableBindingList<cLineItem>(list);
我已经使用 DataGridView 对此进行了测试。我认为它也适用于 GridView。
【解决方案3】:
您如何使用 ASPX 中的 SqlDataSource(或类似的)或 .cs 代码隐藏中的代码填充 GridView?
如果您知道确切的构成,则可以遍历子控件并投射对象,但这并不有趣。如果有任何方法可以在将数据绑定到 GridView 之前复制数据,那就更典型了。
【解决方案4】:
我将创建一个共享方法甚至一个类(取决于您需要此功能的频率),负责接收一组数据集合(但是您正在检索这些数据列)并编译它成一个连贯的类型数据表。这将添加您将获得的所有内置排序功能,并且还使您能够为您的总数据拥有一个单一的编译源。然后您可以使用 DefaultView 对这些数据进行排序/混合/过滤,而不会影响其原始性质。