我有一个gridview,它有很多列..列分别得到并显示在gridview中。
现在我需要对这个gridview进行排序但是我不能这样做....我已经找到了一种方法,但我需要在数据表或数据集中获取gridview ....有没有办法做到这一点?
DataSet ds= new DataSet();
ds = Gridview1.????
请帮助..
答案 0 :(得分:0)
执行此操作的一种方法是使用 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];
答案 1 :(得分:0)
您可以创建一个新类来表示表中的每一行,并绑定到该类的对象列表。然后,为了修复排序,您可以将数据源包装在SortableBindingList中。您可以使用此zip file中的PropertyComparer.cs和SortableBindingList.cs文件,并像这样使用它:
gridView1.DataSource = new SortableBindingList<cLineItem>(list);
我用DataGridView测试了这个。我认为它也适用于GridView。
答案 2 :(得分:0)
如何使用ASPX中的SqlDataSource(或类似代码)或.cs代码隐藏中的代码填充GridView?
如果您知道确切的化妆但是这很有趣,可以遍历子控件和强制转换对象。如果有任何方法可以在将数据绑定到更典型的GridView之前复制数据。
答案 3 :(得分:0)
我会创建一个共享方法,甚至可能是一个类(取决于你需要这个功能的频率),它将负责接收一组数据集合(但是你要检索这些数据列)并编译它成为一个连贯的类型数据表。这将添加您将获得的所有内置排序功能,并且还使您能够为您的总数据提供单一的编译源。然后,您可以使用DefaultView对此数据进行排序/混合/过滤,而不会影响其原始性质。