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#,错误之处,还请指教。

  

原文地址:https://www.cnblogs.com/mat-wu/p/5991378.html