按列对 DataGridView 进行排序.DisplayMember

本文关键字:排序 DisplayMember DataGridView | 更新日期: 2023-09-27 18:32:39

我有一个带有几个DataGridViewComboBoxColumnDataGridView,其中实际值与ID相关联,但DisplayMember是查找表中的字符串对应项。我正在尝试使它成为这样,当我按该列排序时,排序是基于DisplayMember而不是ValueMember完成的。我知道这个问题已经解决了这个问题,但答案不够深入,我也不明白。

到目前为止我尝试过什么

  • 绑定到SortCompare事件,但发现它未在数据绑定列上触发。
  • 手动对 ColumnHeaderMouseClick 事件进行排序,但DataGridViewRowCollection中的行是只读的,我无法以编程方式在数据绑定集合上插入行(交换时(。
  • 创建一个隐藏DataGridViewTextBoxColumn,其中单元格自动设置为原始列的DisplayMember,然后尝试对该列进行排序。但是,不能基于无界列对数据绑定集合进行排序。

编辑:为了进一步澄清:我试图根据组合框的DisplayMember对整个DataGridView进行排序,而不是对组合框本身进行排序。

如何根据数据绑定DataGridViewComboBoxColumn DisplayMemberDataGridView进行排序?

按列对 DataGridView 进行排序.DisplayMember

你的第三次尝试几乎是正确的:你需要做的是在数据集中创建一个额外的列来存储 DisplayMember 的值。然后,创建一个不可见的绑定数据网格视图列,并将其绑定到此额外的数据集列。然后它是一个绑定列,你可以以编程方式对其进行排序。

您链接到的问题正在执行相同的操作,只是该解决方案在返回到应用程序之前在 SQL 中生成显示成员文本。

你会认为这很简单,不是吗?:)