首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF DataGrid按ComboBox字段排序

WPF DataGrid按ComboBox字段排序
EN

Stack Overflow用户
提问于 2009-06-09 08:52:00
回答 4查看 3.7K关注 0票数 2

我有带有combox列的WPF datagrid (ID是实值,Desc是显示值),当我单击该列的标题时,会自动按实值(ID)排序。我想按显示值排序。

我的WPF数据网格有4列: IdPerson、DescSchool、IdSchool和学校。列“comboBox”具有以下值:ItemSource= schoolTable.DefaultView,SelectedValueBinding =新绑定(“IDSchool”),SelectedValuePath="IDSchool",DisplayMemberPath = "DescSchool“

schoolTable是一个包含2列的表- IDSchool和DescSchool。该表仅用作combobox的数据源。

当我设置了SortMemberPath = "DescSchool“时,我尝试了这个解决方案,最初,这是有效的-当我单击组合框列的标题时,排序是按显示值(因为它读取另一列的值)而不是按实际值进行的。但是,如果我更改了combobox的值,"DescSchool“列的值仍然是相同的,因此在排序之后不再正常工作。

有什么想法吗?

EN

回答 4

Stack Overflow用户

发布于 2009-06-09 11:22:49

DataGridComboBoxColumn上设置SortMemberPath="Desc" (或调用您的属性)应该可以做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2014-01-29 19:43:49

最近也遇到了类似的问题。

尝试如下所示:

代码语言:javascript
复制
SortMemberPath="School.DescSchool"

希望它能帮助你或其他人!

票数 1
EN

Stack Overflow用户

发布于 2010-06-26 00:42:57

我也遇到过这个问题,不得不在排序的类型上实现IComparable。因此,在你的情况下,我认为它是学校类型的。在IComparable中,返回以下内容:

代码语言:javascript
复制
return this.Desc.CompareTo((obj as School).Desc);

这是我能够让它工作的唯一方法,从缺乏回应的情况来看,没有多少人知道更好的way...sorry。

此外,只有在您有权访问类型的情况下,这才会起作用。如果这是一个数据表或类似的东西(例如,与实体框架相反),则此解决方案将不起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/968937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档