DEV ComBoxEdit实现模糊检索数据

本文介绍如何使用ComBoxEdit控件实现模糊检索功能。通过过滤数据源并重新绑定到控件,用户可以自由输入值进行搜索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天老大叫我修改一下项目中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
            }
            
        }
       /// <summary>
       /// 给全局dt复制,这里可以是sql语句,得到table后循环table绑定数据到控件
       /// </summary>
        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
            }
            
        }
    }
}

  运行效果如下图:

Dev ComboxEdit 失去焦点事件是指在使用Dev ComboxEdit控件时,当控件失去焦点时触发的事件。焦点是指当前鼠标或者键盘输入的对象,即当前获得用户输入的对象。当一个控件失去焦点时,说明用户已经不再与该控件交互,输入操作已结束,该控件将不再接受新的输入,转而将焦点移交给其他控件或窗体。 Dev ComboxEdit控件是DevExpress公司推出的下拉列表框控件,支持数据绑定和多种显示方式,常用于数据输入和展示。失去焦点事件是该控件非常重要的一个事件,可以应用于多种场景,例如当用户在下拉列表框中选择了一个新的选项时,需要重新计算或刷新相关数据,此时可以使用失去焦点事件。又例如在某些情况下,需要在用户输入完成后,自动触发查询操作或计算操作,使用失去焦点事件非常方便。 在Dev ComboxEdit控件中,失去焦点事件可以在控件属性中进行设置或者在代码中进行绑定。当下拉列表框控件失去焦点时,该事件触发,可以执行相应的操作。可以定义一个事件处理函数,在函数中进行事件处理,例如重新计算、刷新数据或者其他操作。 综上所述,Dev ComboxEdit失去焦点事件是该控件非常重要的一个事件,可以应用于多种场景,具有很高的实用价值。通过合理的使用失去焦点事件,可以提高应用程序的用户体验,增强交互性,并且能够使程序更加智能、高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值