自定义DataGridView列排序基于Value not Formatted值

时间:2010-05-21 20:01:46

标签: c# .net winforms .net-3.5 datagridview

我有一个自定义DataGridView单元格,用于显示MyType个对象的内容。要控制它们的格式化方式,我会覆盖GetFormattedValue()的{​​{1}}和FormattedvalueType方法,因为在这种情况下我不想使用默认的DataGridViewTextBoxCell方法。问题是,当我执行此操作时,ToString()会按DataGridView中的字符串而不是FormattedValue对字符串进行排序。

我没有看到我可以覆盖的方法来更改列的排序行为。虽然我知道我可以,但我不想编写自定义Value方法,因为我在多个DataGridView.Sort()中使用MyType列。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

您是手动填充DGV还是使用数据绑定?

在前一种情况下,您可以处理SortCompare事件,如SwDevMan81发布的链接中所述。

在后一种情况下,请确保您的MyType类实现IComparable。 DGV将使用此实现对数据进行排序。