winform combobox 实现模糊查询

winform combobox控件绑定datatable并实现实现模糊查询,显示下拉列表,网上太多案例,都不是我所需要的,研究了一下 不用Dev 也能实现不错的效果。

废话不多直接代码加图片

先看效果图

NO1. combobox 绑定数据源

        private void BindPaperCodeA()
        {
            //绑定数据时 删除 SelectedIndexChanged
            cmbPaperCode.SelectedIndexChanged -= new EventHandler(cmbPaperCode_SelectedIndexChanged);

            cmbPaperCode.ValueMember = "id"; cmbPaperCode.DisplayMember = "call";
            DataTable dt = pagerModelBLL.GetList(" state=" + ((int)EState.Normal).ToString() + " and  paper_code=" + cmbPaperType.SelectedValue.ToString()).Tables[0];
            DataRow dr = dt.NewRow();
            dr["id"] = "0";
            dr["call"] = "全部";
            dt.Rows.InsertAt(dr, 0);
            cmbPaperCode.DataSource = dt;

            //绑定数据完成时 绑定SelectedIndexChanged事件
            cmbPaperCode.SelectedIndexChanged += new EventHandler(cmbPaperCode_SelectedIndexChanged);
        }

NO2.ComboBox添加TextUpdate事件

private void cmbPaperCode_TextUpdate(object sender, EventArgs e)
        {
            cmbPaperCode.ValueMember = "id"; cmbPaperCode.DisplayMember = "call";
            DataTable dt = pagerModelBLL.GetList(" state=" + ((int)EState.Normal).ToString() + " and  paper_code=" + cmbPaperType.SelectedValue.ToString()).Tables[0];
            DataRow dr = dt.NewRow();dr["id"] = "0";dr["call"] = "全部";dt.Rows.InsertAt(dr, 0);
            if (string.IsNullOrEmpty(cmbPaperCode.Text.Trim()))
            {
                cmbPaperCode.DataSource = dt;
            }
            else
            {
                DataTable dt2 = pagerModelBLL.GetList(" state=" + ((int)EState.Normal).ToString() + " and call like ‘" + cmbPaperCode.Text.Trim() + "%‘ and  paper_code=" + cmbPaperType.SelectedValue.ToString()).Tables[0];
                if (dt2 != null && dt2.Rows.Count > 0)
                {
                    DataRow[] drS = dt2.Select(" call= ‘" + cmbPaperCode.Text + "‘");
                    if (drS.Length > 0)
                    {
                        cmbPaperCode.DataSource = dt2;
                        cmbPaperCode.SelectedValue = drS[0]["id"].ToString();
                    }
                    else
                    {
                        DataRow dr2 = dt2.NewRow();
                        dr2["id"] = "0";
                        dr2["call"] = cmbPaperCode.Text;
                        dt2.Rows.InsertAt(dr2, 0);
                        cmbPaperCode.DataSource = dt2;
                        //保持鼠标指针原来状态,有时候鼠标指针会被下拉框覆盖,所以要进行一次设置。
                        Cursor = Cursors.Default;
                        //自动弹出下拉框
                        cmbPaperCode.DroppedDown = true;
                        cmbPaperCode.SelectionLength = 0;
                        //设置光标位置,否则光标位置始终保持在第一列,造成输入关键词的倒序排列
                        cmbPaperCode.SelectionStart = cmbPaperCode.Text.Length;
                    }
                }
                else
                {
                    cmbPaperCode.DataSource = dt;
                }
            }
        }

收工

时间: 2024-10-12 16:39:55

winform combobox 实现模糊查询的相关文章

Winform如何实现ComboBox模糊查询

最近朋友问了一个关于Winform实现ComboBox模糊查询的知识点,自己好久没有搞Winform了,就上手练了一下,废话不多说,进入正题. 前台设计: 前台就是一个简单的Form窗体+一个ComboBox控件. 思路整理: 1.用一个List<string> listOnit存放初始化数据,用一个List<string> listNew存放输入key之后,返回的数据. 2.用上面的listOnit初始化ComboBox数据源进行绑定. 3.在TextUpdate方法内部,添加实

winform中ComboBox利用AutoComplete属性实现模糊查询(有缺陷)

上一篇文章是用ComboBox里面的原生事件实现模糊查询,操作比较灵活一些,但是收到评论说,利用AutoComplete属性就可以实现模糊查询,但是据本人所了解,AutoComplete虽然能够方便的实现模糊查询,但是有一定的缺陷,就是,模糊查询只能从左往右. 上一篇连接地址:http://www.cnblogs.com/xilipu31/p/3993049.html 下面是简单的实现方式: 前台:一个简单的form窗体+ComboBox控件 后台:申明List<string> listOni

combobox和combotree模糊查询

First /** * combobox和combotree模糊查询 * combotree 结果显示两级父节点(手动设置数量) * 键盘上下键选择叶子节点 * 键盘回车键设置文本的值 */ (function(){ //combobox可编辑,自定义模糊查询 $.fn.combobox.defaults.editable = true; $.fn.combobox.defaults.filter = function(q, row){ var opts = $(this).combobox('

ext.net中ComboBox空间实现模糊查询

ComboBox中的属性添加Mode="Local"可以实现第一个字的模糊查询但是搜索中间的字无法实现 现提供一下方法使用正则表达式实现全模糊查询 <ext:ComboBox ID="ComboBox1" runat="server" DisplayField="MingCheng" ValueField="Id" StoreID="Employ" Width="100&

jquery easyui combobox 从指定位置开始模糊查询

$("#bzr").combobox({ url: "ClassSave.aspx?opt=bzr&bzr=<%=arrbj[2]%>", valueField: "value", textField: "text", mode: "local", filter: function (q, row) { var opts = $(this).combobox('options'); va

easyui combobox模糊查询

用easyui框架开发的攻城狮恐怕都遇到过这样一个问题,就是在新增页面combobox下拉框需要支持模糊查询,但是输入不是combobox中Data里面的值的时候,点击保存,依然是可以新增进去的,这样是肯定不行的,那这样是怎么解决的呢,本人就曾经用过一个很笨的办法,就是用combobox中面板隐藏的时候,获取下拉框Data数据,然后遍历判断,如果数据的不是Data中的数据,清空下拉框的值 1 onHidePanel:function(){ 2 var flag = true; 3 var val

Easyui 实现智能模糊查询(智能检索)

js代码:    <input id="proBidSectionone" name="proBidSectionone" value="">重点://工作标段模糊查询 $("#proBidSectionone").combobox({        valueField: 'uid',        textField: 'paramName',        url: path+'/admin/dispatch

10 行 Python 代码实现模糊查询/智能提示

10 行 Python 代码实现模糊查询/智能提示 1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列表供用户选择. 样例如下: Vim (Ctrl-P) Sublime Text (Cmd-P) '模糊匹配'这是一个极为有用的特性,同时也非常易于实现. 2.问题分析: 我们有一堆字符串(文件名)集合,我们根据用户的输入不断进行过滤,用户的输入可能是字符串的一部分.我们就以下面的

MySQL指定模糊查询范围 或 获取或者查询数据库字段的特定几位

SUBSTR 函数 正常的: select * from sky_user WHERE name LIKE "%name%" 现在我需要匹配name的前五位 select * from sky_user WHERE SUBSTR(name,1,5) LIKE "%name%" SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分.这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR( ), SUBSTRING( ) Oracl