C# 控件中Combobox中从数据库获取数据库字段值和模糊查询。
第一种方法,可以绑定数据库。combobox控件中就会显示绑定的数据库字段值,但是模糊查询只能从左到右输入。例如,数据库字段值有:A001,A002,A003,B001,B002,B003。只能输入A……或者B……才能查询,若是输入1或者2或者3,根本无法模糊查询。需要改的属性为,combobox的AutoCompleteMode 为SuggestAppend; AutoCompleteSourc
第一种方法,可以绑定数据库。combobox控件中就会显示绑定的数据库字段值,但是模糊查询只能从左到右输入。
例如,数据库字段值有:A001,A002,A003,B001,B002,B003。只能输入A……或者B……才能查询,若是输入1或者2或者3,根本无法模糊查询。
需要改的属性为,combobox的 AutoCompleteMode 为SuggestAppend; AutoCompleteSource 为ListItems。
第二种方法是写combobox的TextUpdate事件。
1、用一个List<string> listOnit存放初始化数据,用一个List<string> listNew存放输入key之后,返回的数据。
public partial class UI_TEST : Form
{
//初始化绑定默认关键词(此数据源可以从数据库取)
List<string> listOnit = new List<string>();
//输入key之后,返回的关键词
List<string> listNew = new List<string>();
public UI_TEST ()
{
InitializeComponent();
}
2、用上面的listOnit初始化ComboBox数据源进行绑定。
private void BindComboBox()
{
//查询出来 循环添加数据
SqlConnection con = new SqlConnection("Data Source=服务器IP;Password=数据库密码;User ID=数据库用户;Initial Catalog=数据库名称");
con.Open();
string sql = "SELECT NAME FROM STUDENT";
SqlDataAdapter sure = new SqlDataAdapter();
sure.SelectCommand = new SqlCommand(sql, con);
DataSet dst = new DataSet();
sure.Fill(dst);
for (int i = 0; i < dst.Tables[0].Rows.Count; i++)
{
listOnit.Add(dst.Tables[0].Rows[i][0].ToString());
}
this.comboBox2.Items.AddRange(listOnit.ToArray());
}
在FORM窗体的load事件中添加BindComboBox();在窗体初始运行的时候加载数据库字段值。
private void UI_TEST_Load(object sender, EventArgs e)
{
BindComboBox();
}
3、写TextUpdate事件,实现模糊查询。
private void comboBox2_TextUpdate(object sender, EventArgs e)
{
//清空combobox
this.comboBox2.Items.Clear();
//清空listNew
listNew.Clear();
//遍历全部备查数据
foreach (var item in listOnit)
{
if (item.Contains(this.comboBox2.Text))
{
//符合,插入ListNew
listNew.Add(item);
}
}
//combobox添加已经查到的关键词
this.comboBox2.Items.AddRange(listNew.ToArray());
//设置光标位置,否则光标位置始终保持在第一列,造成输入关键词的倒序排列
this.comboBox2.SelectionStart = this.comboBox2.Text.Length;
//保持鼠标指针原来状态,有时候鼠标指针会被下拉框覆盖,所以要进行一次设置。
Cursor = Cursors.Default;
//自动弹出下拉框
this.comboBox2.DroppedDown = true;
}
更多推荐
所有评论(0)