【问题标题】:Sorting C#.net DataGridView columns as decimal将 C#.net DataGridView 列排序为十进制
【发布时间】:2017-07-22 05:02:53
【问题描述】:

我有一个带有 DataGridView 列的 WinForms 应用程序,该列在运行时填充了价格,价格是字符串数据类型。

当我使用以下方法对这些列进行排序时:

dgvDealerPrices.Sort(colPrice, ListSortDirection.Ascending);

它对价格进行如下排序:

10,350 英镑
11,294 英镑
8,999 英镑
9,050 英镑
9,099 英镑
9,099 英镑
9,149 英镑
9,199 英镑
9,199.99 英镑
9,200 英镑
9,299 英镑
9,457.31 英镑
9,899 英镑
9,994 英镑

显然是因为它正在对字符串进行排序。如何正确排序价格?即作为小数,但保持显示的字符串格式。我玩过 SortCompare 属性,但无法正常工作。

【问题讨论】:

标签: c# winforms sorting datagridview


【解决方案1】:

您可以使用自己的比较器:

dgvDealerPrices.Sort(new PriceComparer());

class PriceComparer : IComparer
{
    public int Compare(object x, object y)
    {
        var rowX = (DataGridViewRow)x;
        var rowY = (DataGridViewRow)y;
        var strX = (string)rowX.Cells["colPrice"].Value;
        var strY = (string)rowY.Cells["colPrice"].Value;
        return Decimal.Compare(Decimal.Parse(strX.Replace("£", "")), Decimal.Parse(strY.Replace("£", "")));
    }
}

【讨论】:

  • 你的传奇!稍微调整了一下,效果很好!
  • 我很高兴我帮助了@TomCarroll :)
猜你喜欢
  • 2013-07-04
  • 1970-01-01
  • 2010-12-09
  • 2017-07-19
  • 2015-04-04
  • 1970-01-01
  • 2019-01-03
  • 2017-07-31
  • 2013-07-20
相关资源
最近更新 更多