【发布时间】:2016-02-18 10:02:23
【问题描述】:
我正在尝试对包含一些日期和值的DataTable 进行排序。我将DataTable 信息传递给DataGridView 并对数据进行排序,然后尝试将其传回。
以下代码运行成功,但没有产生任何差异:
Form1.DataGridView1.DataSource = ChartTable
Form1.DataGridView1.Sort(Form1.DataGridView1.Columns(0), System.ComponentModel.ListSortDirection.Ascending)
ChartTable = CType(Form1.DataGridView1.DataSource, DataTable).Copy()
ChartTable = ChartTable.DefaultView.ToTable
For i = 0 To ChartTable.Rows.Count - 1
Debug.Print("ChartTable = " & ChartTable.Rows(i)(0) & ", DataGrid = " & Form1.DataGridView1.Rows(i).Cells(0).Value)
Next
这是Debug.Print的输出
ChartTable = 30/12/15, DataGrid = 27/10/15
ChartTable = 27/10/15, DataGrid = 19/11/15
ChartTable = 29/12/15, DataGrid = 22/12/15
ChartTable = 22/12/15, DataGrid = 29/12/15
ChartTable = 19/11/15, DataGrid = 30/12/15
ChartTable(即 DataTable)仍处于其原始未排序状态。
我错过了什么吗?
【问题讨论】:
-
您想对查询中的数据进行排序还是允许用户对 DataGridView 进行排序?
-
用户看不到
DataGridView,它只是用来尝试和提供排序 -
如果您使用
DataGridView1.Sort(Form1.DataGridView1.Columns(0), System.ComponentModel.ListSortDirection.Ascending)创建一个按钮,它会对您的datagridview 进行排序吗? -
是的,
Debug.Print的输出显示 datagridview 已按升序排序 -
Quote : "首先,即使您将 DataTable 对象绑定到 DataSource,它也会从 DataGridView 中分离出来,也就是说,如果您更改 DataGridView,它不会影响您的 DataTable。检查此link,以获得完整答案。
标签: vb.net sorting datagridview datatable