我有一个DataGridView,它有一个DataTable,因为它是Datasource。 每当我对列进行排序然后编辑单元格时,在编辑列之后,该列将自动调整,以便最近编辑的单元格不再位于可查看区域中。有没有办法阻止这种自动排序的发生,只有当我点击列时才排序?
非常感谢提前。
Daryn
答案 0 :(得分:1)
我认为没有办法阻止排序,但您可以在更新之前存储网格的行,列和排序值,然后在更新后将其还原。
以下是我使用的一些代码:
Friend Sub refreshGrid()
Dim row As Integer
Dim col As Integer
Dim gridCol As Integer
Dim gridColsToHide As Integer
Dim rowCountOrig As Integer
Dim rowCountNew As Integer
row = dgvReadOnly.CurrentRow.Index
col = dgvReadOnly.CurrentCell.ColumnIndex
Dim sortVal As String
sortVal = _setSource.DefaultView.Sort
rowCountOrig = _setSource.Rows.Count
_setSource = _displaySet.displaySetTable
rowCountNew = _setSource.Rows.Count
setRowFilter()
_setSource.DefaultView.Sort = sortVal
If (rowCountNew > rowCountOrig) Then ' added new row
row = dgvReadOnly.RowCount - 1 ' new row is at bottom of grid, but skip * row
End If
dgvReadOnly.DataSource = Nothing
dgvReadOnly.DataSource = _setSource
If row >= dgvReadOnly.RowCount - 1 Then ' after delete
row = dgvReadOnly.RowCount - 2
End If
If row >= 0 Then ' if didn't delete all rows matching filter
dgvReadOnly.CurrentCell = dgvReadOnly(col, row)
End If
End Sub
答案 1 :(得分:0)
我不知道这是否有效,但听起来似乎可能。
尝试在编辑单元格时将每个列的SortMode(DataGridView.Columns(1).SortMode)设置为Programmatic或NotSortable,然后在完成编辑后将其设置为自动。