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