博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DEV ComBoxEdit实现模糊检索数据
阅读量:6363 次
发布时间:2019-06-23

本文共 2956 字,大约阅读时间需要 9 分钟。

   这几天老大叫我修改一下项目中LookUpEdit控件的下拉选择功能,实现模糊检索数据,经过一番研究,发现LookUpEdit控件只能实现部分模糊检索数据功能,也就是它的检索索引是从第一位开始,也就是模糊检索数据的时候,用户必须从头开始检索,这样给用户不友好,如果只知道其中的某些关键字则实现不了。如下图:

查询了资料后,发现LookUpEdit不支持自由输入,所以只好用它的兄弟控件ComBoxEdit控件。ComBoxEdit控件能够不受数据源的影响而自由输入值,现在就来说下我的处理思路: 根据用户输入的值,对ComBoxEdit的数据源做过滤,然后重新绑定到控件,废话不多说了,直接上代码吧。

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using DevExpress.XtraEditors.Controls;namespace WindowsFormsApplication1{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        DataTable dt = new DataTable();        private void Form1_Load(object sender, EventArgs e)        {            try            {                                BindData();            }            catch (Exception)            {                                //TODO            }                   }       ///        /// 给全局dt复制,这里可以是sql语句,得到table后循环table绑定数据到控件       ///         private void BindData()        {            dt.Columns.Add(new DataColumn("value", typeof(string)));            for (int i = 0; i < 100; i++)            {                DataRow dr = dt.NewRow();                               dr["value"] = i.ToString();                dt.Rows.Add(dr);                this.comboBoxEdit1.Properties.Items.Add(i);//绑定数据到控件                            }            this.lookUpEdit1.Properties.DataSource = dt;            this.lookUpEdit1.Properties.ValueMember = "value";            this.lookUpEdit1.Properties.DisplayMember = "value";            this.lookUpEdit1.Properties.ShowHeader = false;                   }        private void comboBoxEdit1_KeyUp(object sender, KeyEventArgs e)        {            try            {                string str = comboBoxEdit1.Text.ToString();                //if (str == "")                //    return;                comboBoxEdit1.Properties.Items.Clear();//无论有没有过滤,都要清空原来的值                string s = "value like '%" + str + "%'";                DataView v = dt.DefaultView;                v.RowFilter = s;                DataTable dtt = v.ToTable();                if (dtt.Rows.Count > 0)//如果输入的值过滤后有满足的值,则加载满足条件的值,否则加载全部                {                    for (int i = 0; i < dtt.Rows.Count; i++)                    {                        this.comboBoxEdit1.Properties.Items.Add(dtt.Rows[i]["value"].ToString());                    }                }                else                {                    for (int i = 0; i < dt.Rows.Count; i++)                    {                        comboBoxEdit1.Properties.Items.Add(dt.Rows[i]["value"].ToString());                    }                }            }            catch (Exception)            {                                //TODO            }                   }    }}

  运行效果如下图:

 

小弟做的比较粗糙,希望大虾们多多指点。

     

转载于:https://www.cnblogs.com/dogxuefeng/archive/2012/11/15/2771234.html

你可能感兴趣的文章
详解Java中staitc关键字
查看>>
《Unity着色器和屏幕特效开发秘笈》—— 第3章 利用镜面反射让游戏闪耀起来...
查看>>
前中情局局长:FBI目的是从根本上改善iPhone
查看>>
测试界和学术界应该架起桥梁
查看>>
大隐隐于市,你身边的那些安全隐患你都知道么?
查看>>
这个物联网处理器号称全世界体型最小
查看>>
Decorator模式及其他相似的模式
查看>>
物联网市场迅猛发展 “中国芯”如何把握机会?
查看>>
aws 上使用elb 的多域名问题
查看>>
从 MyEclipse 到 IntelliJ IDEA
查看>>
环球花木网的目标就是致力于打造成为“园林相关行业的专业性门户网站
查看>>
《编写高质量代码:改善c程序代码的125个建议》—— 建议14-1:尽量避免对未知的有符号数执行位操作...
查看>>
《C语言编程魔法书:基于C11标准》——2.2 整数在计算机中的表示
查看>>
全球程序员编程水平排行榜TOP50,中国排名第一
查看>>
HDFS 进化,Hadoop 即将拥抱对象存储?
查看>>
Edge 浏览器奇葩 bug:“123456”打印成“114447”
查看>>
Sirius —— 开源版的 Siri ,由 Google 支持
查看>>
《OpenGL ES应用开发实践指南:Android卷》—— 2.7 小结
查看>>
《Windows Server 2012活动目录管理实践》——第 2 章 部署第一台域控制器2.1 案例任务...
查看>>
Java Date Time 教程-时间测量
查看>>