2009-06-26 18 views
2

データソースとしてDataTableを持つDataGridViewがあります。 列をソートしてからセルを編集すると、その列を編集した後に列が自動的にソートされるため、最近編集されたセルは表示されなくなります。この自動並べ替えが起こらないようにする方法はありますか?列をクリックするだけですか?バインドされたDataGridViewを編集した後の列の自動並べ替えの防止

事前に感謝します。

Daryn

答えて

0

これが動作するかどうか、私は知りませんが、それはそれは可能性がありますように聞こえます。

セルが編集用に選択されているときに各列(DataGridView.Columns(1).SortMode)のSortModeをProgrammaticまたはNotSortableに設定し、編集が完了したら自動に設定してみてください。

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 
関連する問題