【发布时间】:2017-09-21 08:52:36
【问题描述】:
所以我有一个我似乎无法克服的问题。我将排序应用于我的 Datagrid 视图,如下所示。 (我可以在 CoulmunHeaderMouseClick 事件中手动执行此操作,或者允许它自动完成,但为了清楚起见,我已包含手动步骤)
DataGridView1.Sort(DataGridView1.Columns(_sortedColumnIndex),
_sortedColumnDirection)
现在问题来了。在 DGV 中编辑/添加一行后,该行会自动排序。我希望禁用排序并且不让它“捕捉”到它的排序位置。
有没有办法在 CellEndEdit 事件中禁用对列的排序,以便仅在单击列的标题时才应用排序。
示例(在列 2 上应用 ASC 排序)
col1 | col2
一个 | 1
b | 2
c | 3
更改后自动排序的结果
col1 | col2
一个 | 1
c | 1
b | 2
编辑单元格后想要的结果
col1 | col2
一个 | 1
b | 2
c | 1
将排好序的列更改为 col1 不是一种选择。
【问题讨论】:
-
我尝试过的方法:将 SortMode 设置为 NotSortable (
DataGridView1.Columns(e.ColumnIndex).SortMode = DataGridViewColumnSortMode.NotSortable) 清除 DGV 上的排序 (DataGridView1.Sort(DataGridView1.Columns(_sortedColumnIndex), Nothing)) 尝试使用不同的排序模式。我已经完成了程序化和自动排序。 -
这是我的建议。将您的数据放入
DataTable并将其绑定到您的DataGridView。对网格进行排序后,您应该可以在DataTable的DefaultView上调用ToTable以获取原始DataTable的副本,该副本具有相同的顺序但没有应用排序。然后,您可以将新的DataTable绑定到网格来代替旧的,您应该会看到您想要的行为。
标签: vb.net sorting datagridview