C# WinForm实现自动搜索,显示在DataGrid中

功能:
搜索: ———当输入“王”的时候(不做任何操作,会自动显示)

DataGrid会显示数据库中怕有姓“王”的用户
然后再接着输入“王小”
DataGrid会显示数据库中怕有姓“王小”的用户

然后再接着输入“王小二”
DataGrid会显示数据库中怕有姓“王小二”的用户

这种功能叫什么呀?
怎么实现 呀(C# WinForm)里

第1个回答  2010-03-16
这个叫AutoComplate功能。 C#的winform程序内置就支持这个功能,只需要设定textbox的AutoComplate方式为用户自定义方式,然后去写实现接口。

就是这个方向了,自已再去看看msdn的文档就应该会了。
第2个回答  2010-03-18
有3种办法:
方法1:在textbox1的textchanged事件中,加上数据库的模糊查询
方法2:将所有姓名查出后,放在一个DataSet里面或ArrayList里面,在textbox的textchanged事件中对DataSet和ArrayList进行检索(可用如下语句:
如对ArrayList al;的检索,结果放到临时ArrayList al1里;
for(int i=0;i<al.Length;i++)
{
if(al[i].toString().IndexOf(textbox1.Text)!=-1)
{
al1.add(al[i]);
}
}


方法3:直接对DataGrid进行检索
第3个回答  2010-03-20
上面的已经回答了不少方法,我这就不用说了,不用得提醒你,如果直接去查询数据库的话,数据量大的时候速度是非常慢的,而且会影响其它用户。

你最好用dataset保存数据,然后在本地查询,如果要得到最新数据,就得提醒用户重新加载,或者你自己写代码,自动加载(定时或者对比数据)

这种功能叫检索或者搜索了 还有自动索引。
呵呵。
第4个回答  2010-03-16
你放一个TEXTBOX然后在修改事件中加入时时刷新DATAGRID的语句就好了,只不过如果数据量大的话

性能会有很大影响,最好你做一个缓冲,这样效率也就上去了

.................................................................
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
哈哈嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿近距离看vhkyhuiyuoiuopop
第5个回答  2010-03-16
键盘事件触发啊,KeyPress事件里查询数据库

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
string sql = "select * from table where name like '%" + textBox1.Text + "%'";

//...
}
至于效率嘛,要看你的数据量,如果单表数据量不大的话,建议可在查询界面启动时,直接把整张表的数据缓存到内存中,然后KeyPress事件中只搜索内存中的DataTable即可
相似回答