日期:2014-05-19  浏览次数:20951 次

怎么实现自动跳出查询结果
就是在textbox里面输入一个词,旁边自动出现一个窗口,把数据表里包括这个词的记录都列出来,而且随着输入词的增长,窗口里的符合记录应该越来越少。
也不知道用什么专业的词描述这个功能。。。
具体还可以细分一下,一种是不需要打回车,这样最好
还有一种是打回车跳出窗口,但是这样有个问题,怕和别的textbox冲突,因为acceptbutton只有一个吧

------解决方案--------------------
这个可以用ajax效果实现
------解决方案--------------------
要想不回车就有相应数据,则可利用TextBox控件中的TextChanged事件,在事件代码里面写数据查询语句.第二种情况好像不好解决
------解决方案--------------------
可以根据文本框的TextChanged事件不停地做查询
------解决方案--------------------
lz:amandag(高歌)所说极是,不论你是想在另外的窗口得出最新结果,还是在同一窗口的其他控件中如:textbox,listview,datagridview。。。等控件中显示,问题的本质在于:必须在能动态响应textbox输入变化的事件中:
private void textBox1_TextChanged(object sender, EventArgs e)
{
//对各种变量定义,这里不做具体描述
try
{
string strSql = string.Format( "Select * from 表名 where 字段名 like {0} ",textBox1.Text);

sqlCn = new SqlConnection(m_strCn);
sqlDA = new SqlDataAdapter(strSql, sqlCn);
sqlDA.Fill(dataSet1, "表名 ");


//此时,dataSet1变完全取得动态、最新的数据,可以根据需要,将要数据显示到另外的窗体中
Form1 frm = new Form1();
。。。。。
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
------解决方案--------------------
如果想每输入一个字符就进行一次操作的话 不能用onTextChange 而且也不应该在服务端处理,否则每输入一次就postback,让人无法忍受。
建议楼主用客户端的onkeyup事件 我有一小段代码可以看下

<script language= "javascript " type= "text/javascript ">
function show()
{
document.getElementById( "div1 ").innerText = document.getElementById( "Text1 ").value;
}
</script>
<div id= "div1 "> </div>
<input id= "Text1 " type= "text " onkeyup= "show(); "/>
------解决方案--------------------
建议在textbox中输入内容后按回车键就处理(查询数据库)
------解决方案--------------------
楼主已经说了是winform,除了在TextChanged事件处理程序中不停查询外实在找不到别的办法。最多也就是用存储过程,还有在数据库的查询字段加上索引等优化一下查询了。我前几天刚做了一个。

如果数据量不多也许可以先读到DataTable,然后在TextChanged事件处理里进行Filter~
------解决方案--------------------
一次读出目标表```每TextChanged一次就对ds或dt做一次查询
------解决方案--------------------
可利用TextBox控件中的TextChanged事件,在事件代码里面写数据查询语句.