winforms 如何在datagridview更新后保持表头排序

7qhs6swi  于 2023-11-21  发布在  其他
关注(0)|答案(2)|浏览(240)

在我的例子中,列'DEProduct'的排序是desc。


的数据
当我进行datagridview更新时,所有内容都直接恢复为默认的列头值,并且我丢失了列头排序。



我有很多列,那么我如何才能回到这个列头排序,而不是在选择哪一个之前检查它们,然后手动触发它?

n3schb8v

n3schb8v1#

您提到了 * 缓存 *,所以我认为您看到所描述的情况的唯一方式是您正在重置缓存,以便DataGridview重新绑定到一个新的源。
您可以使用DataGridView.SortedColumn PropertyDataGridView.SortOrder Property存储当前的排序状态。然后进行更新。更新后,恢复存储的排序状态。

  1. ' since it is asumed that the datasource changes, store only the column name
  2. Dim sortColName As String = dgv1.SortedColumn?.Name 'dgv1.SortedColumn may be null
  3. Dim direction As SortOrder = dgv1.SortOrder
  4. UpdateData() ' replace this with your Update code
  5. ' restore the sort state if any
  6. If sortColName IsNot Nothing Then
  7. Dim columnToSort As DataGridViewColumn = dgv1.Columns(sortColName)
  8. If columnToSort IsNot Nothing Then
  9. Dim directionProgrammatic As System.ComponentModel.ListSortDirection
  10. Select Case direction
  11. Case SortOrder.Ascending
  12. directionProgrammatic = System.ComponentModel.ListSortDirection.Ascending
  13. Case SortOrder.Descending
  14. directionProgrammatic = System.ComponentModel.ListSortDirection.Descending
  15. End Select
  16. dgv1.Sort(columnToSort, directionProgrammatic)
  17. columnToSort.HeaderCell.SortGlyphDirection = direction
  18. End If
  19. End If

字符串

展开查看全部
w80xi6nr

w80xi6nr2#

添加用C#编写的答案,与TnTinMn相同

  1. var sortColName = dgv1.SortedColumn;
  2. var sortDirection = dgv1.SortOrder;
  3. UpdateData() ' replace this with your Update code
  4. if (sortColName != null)
  5. {
  6. dgv1.Sort(sortColName,
  7. sortDirection == SortOrder.Ascending
  8. ? ListSortDirection.Ascending
  9. : ListSortDirection.Descending);
  10. }

字符串

相关问题