易丰科技

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6510|回复: 0
打印 上一主题 下一主题

Devexpress lookupedit Multi-column filter

[复制链接]

26

主题

26

帖子

795

积分

高级会员

Rank: 4

积分
795
跳转到指定楼层
楼主
发表于 2013-5-18 21:58:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  在使用devexpress lookupedit中,有需要使用到多列过滤。例如,一个lookupedit中呈现的是产品的资料,在lookupedit中输入产品名称和拼音字母都可实现对产品的过滤。
lookupedit默认的是对某列过滤的。要实现多列过滤,需要另外写代码控管。代码如下:

  1. private void FilterLookup(object sender)
  2.         {

  3.             GridLookUpEdit edit = sender as GridLookUpEdit;
  4.             GridView gridView = edit.Properties.View as GridView;
  5.             FieldInfo fi = gridView.GetType().GetField("extraFilter", BindingFlags.NonPublic | BindingFlags.Instance);
  6.             BinaryOperator op1 = new BinaryOperator("ProductName", "%" + edit.AutoSearchText + "%", BinaryOperatorType.Like);
  7.             BinaryOperator op2 = new BinaryOperator("PinYin", "%" + edit.AutoSearchText + "%", BinaryOperatorType.Like);
  8.             string filterCondition = new GroupOperator(GroupOperatorType.Or, new CriteriaOperator[] { op1, op2 }).ToString();
  9.             fi.SetValue(gridView, filterCondition);

  10.             MethodInfo mi = gridView.GetType().GetMethod("ApplyColumnsFilterEx", BindingFlags.NonPublic | BindingFlags.Instance);
  11.             mi.Invoke(gridView, null);
  12.         }

  13.         private void lkpProductID_EditValueChanging(object sender, ChangingEventArgs e)
  14.         {
  15.             this.BeginInvoke(new System.Windows.Forms.MethodInvoker(delegate
  16.             {
  17.                 FilterLookup(sender);
  18.             }));
  19.         }
复制代码

在lkpProduct中输入的时候,触发lkpProductID_EditValueChanging事件,调用FilterLookup 方法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|易丰科技

GMT+8, 2024-5-19 11:32 , Processed in 0.020444 second(s), 20 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表