none
WPF DataGrid 点击列头进行排序,设置SortMemberPath了,但是排序结果不正确 RRS feed

  • 问题

  • 大家好,我遇到了这样的问题,请有知道的大神帮忙。
    用WPF 开始软件,用的是 <toolkit:DataGrid 的列表控件,我已经设置了SortMemberPath,但是点击列头之后,可以排序,但是排序是错误的。
     如果感兴趣的,可以打开下面的网盘进行下载工程,很小~

    这是默认结果:

    我现在点击“最新价”,得到的结果是:

    结果不正确,请问哪里有问题?

    下载解决方案:::

    http://pan.baidu.com/s/1mijGCyO

    http://pan.baidu.com/s/1mijGCyO

    http://pan.baidu.com/s/1mijGCyO

    http://pan.baidu.com/s/1mijGCyO

    另外,为什么我在后台实现了Sorting事件(这里只是把集合里的值进行反过来显示),为什么我不能进行后台绑定数据?(加入了SortMenberPath,会触发Sorting事件,但是结果不正确)

     List<ProductQuotation> tempListPros = new List<ProductQuotation>();
                for (int i = listPros.Count - 1; i >= 0; i--)
                {
                    tempListPros.Add(listPros[i]);
                }
                listPros = tempListPros;
    this.MainGrid.DataContext = listPros;

    谢谢各位。


    • 已编辑 LannyFly 2016年4月2日 17:49 加代码
    2016年4月2日 17:48

答案

  • 您好 LannyFly,

    >>"结果不正确,请问哪里有问题?"

    看了下您的代码,发现Price属性的类型是String。当排序的时候会根据字符串的排序规则来排,也就是从第一个字符开始逐个字符比对大小。所以把类型改为decimal就不会有问题了。

    >>"另外,为什么我在后台实现了Sorting事件(这里只是把集合里的值进行反过来显示),为什么我不能进行后台绑定数据?"

    您在代码中修改了listPros集合,但是并未重新绑定DataGrid。所以应该在MainGrid_Sorting的最后加上如下一行代码。

    listPros = tempListPros;
    this.MainGrid.DataContext = listPros;
    Best Regards,
    Li Wang

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年4月5日 6:56