【问题标题】:How to change string column sorting to decimal sorting in WPF Listview column如何在 WPF Listview 列中将字符串列排序更改为十进制排序
【发布时间】:2013-10-05 22:15:05
【问题描述】:

我在排序数字时遇到另一个问题,这些数字实际上是来自 DB 的字符串 [varchar]。在 WPF 列表视图中,单元格模板有一个文本框。

当数据从DB加载到listview中时,listview Salary列绑定到数据表中的salary列。由于其他一些业务逻辑,数据库表中的这个薪水列是varchar。

但是当它显示在列表视图中时,工资在列表视图的工资单元列中显示为“456.56”,就像浮动或十进制数字一样。由于底层数据源是数据表,所以 Salary 列是 varchar 数据类型!!因此,在对 listview 工资列进行排序时,它不会像数字一样对工资列进行排序!!

在这种情况下我可以使用 IComparer 吗?如果是这样,如何?任何例子都很有帮助!

【问题讨论】:

    标签: c# wpf listview


    【解决方案1】:

    为什么不直接遍历数据,无论是在检索数据时,还是在显示数据之前在视图模型中,然后将数据解析为正确的数据类型?然后你可以让ListView 进行排序:

    foreach (YourDataType item in yourItemCollection)
    {
        YourDisplayDataType displayItem = new YourDisplayDataType(item.Property1, 
            item.Property2, decimal.Parse(item.DecimalVarcharProperty));
    }
    

    当然,如果您这样做,您需要确保来自数据库的decimal VARCHAR实际上都是十进制值。如果没有,您可以分两个阶段进行上述操作:

    foreach (YourDataType item in yourItemCollection)
    {
        decimal decimalValue = 0;
        decimal.TryParse(item.DecimalVarcharProperty, out decimalValue);
        YourDisplayDataType displayItem = new YourDisplayDataType(item.Property1, 
            item.Property2, decimalValue);
    }
    

    免责声明:我目前无法在编译器中检查这一点,因此可能有错误...如果是这种情况,请告诉我,我会更新答案。

    【讨论】:

      猜你喜欢
      • 2019-10-25
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 2013-03-31
      • 1970-01-01
      相关资源
      最近更新 更多