C#关于DataGridView排序的问题

时间:2017-03-13 16:39:45

标签: c# sorting datagridview

我有两个问题:

  1. 有没有办法按列对DataGridView进行排序 - 我想使用代码执行此操作,以便我的某个方法可以对DataGridView进行排序。 (与用户单击列标题但没有单击的效果相同。)

  2. 当我对具有decimal值(类型为double)的列进行排序时,排序认为9.99大于24.99 - 有没有办法阻止这种类型的排序行为?< / p>

  3. 更新:由于评论中的链接,问题1已解决。 我还发现了问题的原因问题2:我的列中的值是(double)price + "€"。我尝试删除+ "€",它开始按我想要的方式排序。 现在我希望它能够排序,同时保持€。不知何故。

1 个答案:

答案 0 :(得分:0)

由于第一个问题被stuartd正确涵盖,我们将专注于第二个问题:

  

当我对具有decimal值(类型为double)的列进行排序时,排序认为9.99大于24.99 - 有没有办法阻止这种类型的排序行为?

正如您所注意到的,删除+ "€"更正了您的问题,因为带有该列正在执行string比较而不是预期的double比较。您可以使用CultureInfo将列格式化为货币列来解决此问题。

CultureInfo ci = new CultureInfo("fr-FR");
this.dataGridView1.Columns[0].DefaultCellStyle.FormatProvider = ci.NumberFormat;
this.dataGridView1.Columns[0].DefaultCellStyle.Format = "c";

unsorted list sort asc sort desc