• combobox实现模糊查询自动填充


       利用winform设计软件界面时,经常用到combobox控件,但有时需要绑定数据表中的数据,更进一步,需要实现对数据表中数据的模糊查询功能。本文就讲讲述如何用C#实现combobox下拉列表的模糊查询。

      首先,将数据库某数据表中某列数据绑定到combobox。

    (1)选定数据表,获取数据

    public static DataTable getAllData(string dbName)
            {
                string sql = @"SELECT * FROM " + dbName;
                //sql数据库操作命令
                DataTable dt = DBOperSQL.GetDataTable(sql);
                return dt;
            }

         dbName为选定的数据表名称,如何在C#中连接数据库,进行数据操作,在上一篇C#操作access和sql server数据库代码实例中,已经讲述,在此不再赘述。

    (2)将某列数据绑定到combobox。

    public void cmbDownItem(string dbName,string columnName,ComboBox cmb)
            {
                DataTable dtCmbCompany = DBOper.getAllData(dbName);
                if (dtCmbCompany.Rows.Count > 0)
                {
                    cmb.DataSource = dtCmbCompany;
                    cmb.DisplayMember = columnName;
                    //未起作用
                    cmb.ItemHeight = 60;
                    cmb.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                    cmb.AutoCompleteSource = AutoCompleteSource.ListItems;
                }
                else
                {
                    MessageBox.Show("数据表为空");
                }
            }

      dbName为需要绑定的数据表名称,columnName为要绑定的数据表该列的列名,cmb为combobox控件的名称。

      然后,实现模糊查询的功能。获取combobox控件输入的字符串,查找包含该字符串的数据表中绑定列的元素,自动填充到combobox控件的下拉列表项。

      代码实例:

     

    /*autoComplete 是实现combobox自动筛选填充的方法,根据cmb输入,筛选出包含改词的items
             * 输入 dbName,cmb,txt,column 分别为数据表名,cmb名,cmb内容,和数据表列号(从0开始)
             */
            public void autoComplete(string dbName, ComboBox cmb,string txt,int columnNum)
            {
                DataTable dtCmbCompany = DBOper.getAllData(dbName);
    
                //string s = dtCmbCompany.Rows[1][1].ToString();
                string s;
                //ListAll获得该列所有数据
                //ListSelect筛选出符合要求的数据
                List<string> ListAll = new List<string>();
                List<string> ListSelect = new List<string>();
    
                for(int i = 0; i < dtCmbCompany.Rows.Count; i++)
                {
                    s = dtCmbCompany.Rows[i][columnNum].ToString();
                    ListAll.Add(s);
                }
    
               //MessageBox.Show(dtCmbCompany.Rows.Count.ToString());
    
                //选择数据
                cmb.Items.Clear();
                //清空listNew
                ListSelect.Clear();
                //遍历全部备查数据
                foreach (var item in ListAll)
                {
                    if (item.Contains(txt))
                    {
                        //符合,插入ListNew
                        ListSelect.Add(item);
                    }
                }
    
                //cmb.DataSource = ListSelect;
                cmb.Items.AddRange(ListSelect.ToArray());
               // MessageBox.Show(ListSelect[1]);
                cmb.SelectionStart = txt.Length;
                //Cursor = Cursors.Default;
                cmb.DroppedDown = true;
                
    
    
            }

      上面就是如何使用C#给combobox控件绑定数据表列,并且根据输入字符串实现模糊查询的代码实例。最基础的数据库操作代码,在上一篇文章有已经讲到。

      初学C#,错误之处,还请指教。

      

  • 相关阅读:
    jquery防冲突的写法
    easyUI.checkForm
    获取树形节根节点下面所有层级子节点
    自动发布web应用程序或者网站
    MVC UI Jquery
    Linq模糊查询
    常用正则表达式示例
    Easy UI中,当批量操作后,移除总复选框的选中状态
    常用的JS
    检查是否安装或运行了IIS服务
  • 原文地址:https://www.cnblogs.com/mat-wu/p/5991378.html
Copyright © 2020-2023  润新知