DataGridViews排序VB.Net

时间:2017-09-21 08:52:37

标签: vb.net sorting datagridview

所以我有一个似乎无法克服的问题。我按照下面的方法将排序应用于我的Datagrid视图。 (我可以在CoulmunHeaderMouseClick事件中手动执行此操作或允许它自动完成,但为了清楚起见,我已包含手动步骤)

DataGridView1.Sort(DataGridView1.Columns(_sortedColumnIndex),
_sortedColumnDirection)

现在问题出现了。在向DGV编辑/添加行之后,行会自动排序。我希望禁用排序,并让它不“捕捉”到其排序位置。

是否有办法在CellEndEdit事件中禁用列的排序,以便排序仅在单击Column的标题时适用。

示例(在第2列上应用ASC排序)

col1 | COL2

a | 1

b | 2

c | 3<<<编辑列(将值更改为1)

更改后自动排序的结果

col1 | COL2

a | 1

c | 1

b | 2

编辑单元格后的预期结果

col1 | COL2

a | 1

b | 2

c | 1

将排序列更改为col1不是一个选项。

1 个答案:

答案 0 :(得分:1)

我刚试过这个,它基本上可以工作。

Private Sub DataGridView1_Sorted(sender As Object, e As EventArgs) Handles DataGridView1.Sorted
    Dim currentTable = DirectCast(DataGridView1.DataSource, DataTable)
    Dim newTable = currentTable.DefaultView.ToTable()

    DataGridView1.DataSource = newTable
End Sub

它确实有一些怪癖,当你排序时,两者都与当前单元格在新行中有关。我会尝试对其进行改进,但我认为现在您或其他人可能会将其作为更完整解决方案的基础来发布。