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

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


默认打开的列表是:


我点击列头 “最新价”进行排序:

我们明显可以看到,红框那个值排序是不正确的,但是其它值又是正确。

在点“涨跌值”进行排序:

也是混乱的排序。。

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

private void MainGrid_Sorting(object sender, Microsoft.Windows.Controls.DataGridSortingEventArgs e)
{
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;
}


附件解决方案下载:http://pan.baidu.com/s/1mijGCyO
附件解决方案下载:http://pan.baidu.com/s/1mijGCyO
附件解决方案下载:http://pan.baidu.com/s/1mijGCyO
附件解决方案下载:http://pan.baidu.com/s/1mijGCyO

谢谢
...全文
1677 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
宇峰科技 2016-04-24
  • 打赏
  • 举报
回复
最好对observablecollection进行排序,然后就直接反映在ui上了,
baidu_31302759 2016-04-22
  • 打赏
  • 举报
回复
这么简单粗暴-.- 别用list 用dataview 在里面会有sort 把这个属性中赋上 你要排序的列就好了
muzizongheng 2016-04-11
  • 打赏
  • 举报
回复
排序默认是看你的绑定类型, 默认的系统排序有数值排序和字符串排序。 你要确认2点:1.你绑定的类型, 2:它具体的值和系统排序的结果应该是一致的。 然后不满足的话就自己写sort规则,
好几只小萝莉 2016-04-03
  • 打赏
  • 举报
回复
首先,你排序比较的不是数字,而是字符串。 其次,如果你可以用BindingList<T>或者ObservableCollection<T>来实现数据同步。 如果只能是比较字符串,你才需要去自定义Sorting规则,把字符串转类型值换为数字类型值进行比较排序。

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧