找回密码
 立即注册

QQ登录

只需一步,快速开始

panjiping

注册会员

5

主题

13

帖子

138

积分

注册会员

积分
138

活字格认证

panjiping
注册会员   /  发表于:2012-5-24 16:13  /   查看:7234  /  回复:5
在c1datagrid中使用
<c1dataGridTextColumn Header="类别" Binding="{Binding fTypeid, Converter={StaticResource CustomerByTypeid}}" FilterMemberPath="fTypeid" SortMemberPath="fTypeid"/>
这样通过StaticResource CustomerByTypeid会根据一个id返回一个对应的客户名称,所以界面上显示是客户名称,但是FilterMemberPath="fTypeid"如何处理?如果不处理那么只能根据id过滤内容,而我希望不是根据id过滤而是根据转换后的内容过滤,请问如何处理?

5 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-24 17:54:00
沙发
从你的需求描述来看,现在有两个字段一个是类别编号:fTypeid,另一个是类别类别名称:fTypeName,类别这一列绑定的是fTypeid,过滤字段也是fTypeid,显示的是fTypeName,而你最终希望的也是通过fTypeName来过滤

所以,类别这一列绑定的字段、过滤字段和最终显示字段都应该是fTypeName,这样一来Converter操作都可以省略了,唯一需要增加的操作就是在数据源中增加fTypeName字段

不知以上方法是否满足你的要求
回复 使用道具 举报
panjiping
注册会员   /  发表于:2012-5-24 18:10:00
板凳
不能满足要求,数据冗余太大,不可能这样设计数据表。希望能提供converter方法
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-24 19:58:00
地板
“在数据源中增加fTypeName字段”指的是在C1DataGrid的数据源中增加一列,而不是指在物理表(数据库中的Table)中增加一个字段,这种方式并不会增加数据冗余

C1DataGrid的FilterMemberPath属性是需要设置为数据源中的某一字段,所以,设置一个数据源中不存在的字段是不行的
回复 使用道具 举报
panjiping
注册会员   /  发表于:2012-5-24 23:03:00
5#
不是说你的方法不行,只是这样我的代码会变得更麻烦,至于如何麻烦很难在字面上表达,我们曾经用过视图解决了,但是最好是通过Converter来实现。如果确实没有办法就算了。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-25 11:19:00
6#
通过Converter无法实现你的这一需求,原因就是 FilterMemberPath 的值,应该是数据源中存在的字段
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部