Winforms datagridview更新后如何保持标题排序

Winforms datagridview更新后如何保持标题排序,winforms,datagridview,Winforms,Datagridview,在我的示例中,“DEProduct”列的排序为desc 在执行datagridview更新时,所有内容都会直接还原为默认的数据源值,并且会丢失columnheader排序 我有很多列,所以我如何返回到这个列标题排序,而不在选择哪个列之前检查它们,并在之后手动触发它?您提到的datasource,因此,我可以看到您看到所描述的情况的唯一方法是重置数据源,以便DataGridview重新绑定到新的源 可以使用和存储当前排序状态。然后进行更新。更新后,恢复存储的排序状态 ' since it

在我的示例中,“DEProduct”列的排序为desc

在执行datagridview更新时,所有内容都会直接还原为默认的数据源值,并且会丢失columnheader排序

我有很多列,所以我如何返回到这个列标题排序,而不在选择哪个列之前检查它们,并在之后手动触发它?

您提到的datasource,因此,我可以看到您看到所描述的情况的唯一方法是重置数据源,以便DataGridview重新绑定到新的源

可以使用和存储当前排序状态。然后进行更新。更新后,恢复存储的排序状态

  ' since it is asumed that the datasource changes, store only the column name
  Dim sortColName As String = dgv1.SortedColumn?.Name 'dgv1.SortedColumn may be null
  Dim direction As SortOrder = dgv1.SortOrder

  UpdateData() ' replace this with your Update code

  ' restore the sort state if any
  If sortColName IsNot Nothing Then
    Dim columnToSort As DataGridViewColumn = dgv1.Columns(sortColName)
    If columnToSort IsNot Nothing Then
      Dim directionProgrammatic As System.ComponentModel.ListSortDirection
      Select Case direction
        Case SortOrder.Ascending
          directionProgrammatic = System.ComponentModel.ListSortDirection.Ascending
        Case SortOrder.Descending
          directionProgrammatic = System.ComponentModel.ListSortDirection.Descending
      End Select
      dgv1.Sort(columnToSort, directionProgrammatic)
      columnToSort.HeaderCell.SortGlyphDirection = direction
    End If
  End If
您提到了datasource,因此我可以看到您看到所描述的情况的唯一方式是您正在重置datasource,以便DataGridview重新绑定到一个新的源

可以使用和存储当前排序状态。然后进行更新。更新后,恢复存储的排序状态

  ' since it is asumed that the datasource changes, store only the column name
  Dim sortColName As String = dgv1.SortedColumn?.Name 'dgv1.SortedColumn may be null
  Dim direction As SortOrder = dgv1.SortOrder

  UpdateData() ' replace this with your Update code

  ' restore the sort state if any
  If sortColName IsNot Nothing Then
    Dim columnToSort As DataGridViewColumn = dgv1.Columns(sortColName)
    If columnToSort IsNot Nothing Then
      Dim directionProgrammatic As System.ComponentModel.ListSortDirection
      Select Case direction
        Case SortOrder.Ascending
          directionProgrammatic = System.ComponentModel.ListSortDirection.Ascending
        Case SortOrder.Descending
          directionProgrammatic = System.ComponentModel.ListSortDirection.Descending
      End Select
      dgv1.Sort(columnToSort, directionProgrammatic)
      columnToSort.HeaderCell.SortGlyphDirection = direction
    End If
  End If
您能否澄清(更好地使用代码)datagridview更新意味着什么如果对控件而不是数据进行排序,则可以存储DGV列的状态
SortMode
,然后在。。。什么之后?否则,请保存对数据进行排序的列的名称,并使用该名称对传入数据进行排序(是通过SQL命令获取的吗?),您能否澄清(最好使用代码)datagridview更新意味着什么?--如果对控件而不是数据进行排序,则可以存储DGV列的状态
SortMode
,然后在。。。什么之后?否则,保存对数据进行排序的列的名称,并使用该名称对传入数据进行排序(是否由SQL命令获取?)