编辑绑定的DataGridView后阻止列自动排序

时间:2009-06-26 13:42:17

标签: vb.net sorting datagridview

我有一个DataGridView,它有一个DataTable,因为它是Datasource。 每当我对列进行排序然后编辑单元格时,在编辑列之后,该列将自动调整,以便最近编辑的单元格不再位于可查看区域中。有没有办法阻止这种自动排序的发生,只有当我点击列时才排序?

非常感谢提前。

Daryn

2 个答案:

答案 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,然后在完成编辑后将其设置为自动。