2

我有DataGridView几个DataGridViewComboBoxColumn's ,其中实际值与一个 ID 相关联,但它DisplayMember是查找表中的字符串对应项。我正在努力做到这一点,所以当我按该列排序时,排序是基于DisplayMember,而不是ValueMember. 我知道这个问题已经解决了这个问题,但答案不够深入,我也不理解。

到目前为止我尝试过的

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

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

如何DataGridView根据数据DisplayMember绑定对 a 进行排序DataGridViewComboBoxColumn

4

1 回答 1

2

您的第三次尝试几乎是正确的:您需要在 DataSet 中创建一个额外的列来存储 DisplayMember 的值。然后,创建一个不可见的绑定 DataGridViewColumn,并将其绑定到这个额外的 DataSet 列。然后它是一个绑定列,您可以以编程方式对其进行排序。

您链接到的问题也在做同样的事情,只是该解决方案在返回到应用程序之前在 SQL 中生成显示成员文本。

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

于 2012-05-03T08:10:01.563 回答