按DisplayMember对DataGridView进行排序

时间:2010-05-24 09:05:34

标签: winforms

我有一个绑定到DataTable的DataGridView。在此表中有一些外键。然后我使用CellFormatting事件从另一个数据库表中获取每个外键的相应文本。

我想在用户点击标题时对DataGridView进行排序。自动排序有效,但不正确,因为它是在ValueMember(ForeignKey ID)上排序而不是在DisplayMember(文本)上排序。

我尝试使用SortCompare事件,但后来我发现它在使用DataSource属性的DataGridViews上不起作用。

如何做到这一点?

由于

1 个答案:

答案 0 :(得分:1)

通过在初始语句中添加嵌套的select语句来解决此问题。

由此:

SELECT id, column1, column2, column3_fk 
FROM   db_table

对此:

SELECT id, column1, column2, column3_fk, 
       (
         SELECT DESC FROM db_table2 
         WHERE id = db_table1.column3_fk
       ) AS fk_description 
FROM   db_table1