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#,錯誤之處,還請指教。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM