2009-06-26 98 views
2

我有一個DataGridView有一個DataTable,因爲它是數據源。 無論何時我對列進行排序然後編輯單元格,在編輯列後,列會自動排列,因此最近編輯的單元格不再位於可見區域中。有什麼辦法來防止這種自動排序發生,只有當我點擊列時才排序?編輯綁定後防止列自動排序DataGridView

非常感謝提前。

Daryn

回答

0

我不知道這是否有效,但聽起來好像可能。

嘗試將每個列(DataGridView.Columns(1).SortMode)的SortMode設置爲Programmatic或NotSortable,當單元格被選中編輯時,然後在完成編輯後將其設置爲Automatic。

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