我有一個DataGridView有一個DataTable,因爲它是數據源。 無論何時我對列進行排序然後編輯單元格,在編輯列後,列會自動排列,因此最近編輯的單元格不再位於可見區域中。有什麼辦法來防止這種自動排序發生,只有當我點擊列時才排序?編輯綁定後防止列自動排序DataGridView
非常感謝提前。
Daryn
我有一個DataGridView有一個DataTable,因爲它是數據源。 無論何時我對列進行排序然後編輯單元格,在編輯列後,列會自動排列,因此最近編輯的單元格不再位於可見區域中。有什麼辦法來防止這種自動排序發生,只有當我點擊列時才排序?編輯綁定後防止列自動排序DataGridView
非常感謝提前。
Daryn
我不知道這是否有效,但聽起來好像可能。
嘗試將每個列(DataGridView.Columns(1).SortMode)的SortMode設置爲Programmatic或NotSortable,當單元格被選中編輯時,然後在完成編輯後將其設置爲Automatic。
我不認爲有防止排序的方法,但可以在更新之前存儲網格的行,列和排序值,然後在更新後將其還原。
下面是一些代碼的使用:
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