使用文本框实现智能搜索功能

lingfeng84 2012-08-24 09:27:12
各位,为了方便搜索,提高操作效率,我希望做一个智能搜索的功能。
就是比如两个字段,助记码和名称。当我在文本框中输入助记码时,与助记码关联的名称就会在文本框下显示,可以方便选择的那种,不知道要怎么做。最好能提供需要的类,当然有源码就更棒了
...全文
407 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanglong19891129 2012-08-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

只用一个textbox,两个多了引用 8 楼 的回复:
不会自己写sql么?这个 随便2个 textbox 都可以实现吧 无非就是 当 text_changed 事件发生时 根据 第一个的text 去取 第 2个 text的值
[/Quote]
这个 随便几个都一样,, 最后加到一个string 就得 ,在把 string 赋给 textbox
allen0118 2012-08-24
  • 打赏
  • 举报
回复
我的项目里面一直用,绝对没问题。
allen0118 2012-08-24
  • 打赏
  • 举报
回复





//文本框的文本改变事件
private void txtPN_SMTAI_TextChanged(object sender, EventArgs e)
{
this.lsbPNList_MI.Visible = false;//刚开始listbox不可见
if (txtPN_SMTAI.Text == "")
{
this.lsbPNList_MI.Items.Clear();
this.lsbPNList_MI.Visible = false;//当文本框内容为空时继续不可见
}
else
{
NewMethod();
}
}

//文本框的MouseClick事件
private void txtPN_SMTAI_MouseClick(object sender, MouseEventArgs e)
{
lsbPNList_SMT.Visible = false;
}



private void NewMethod()
{


string sql = "SELECT distinct PN80 from existsModel where PN80 like " + "'%" + this.txtPN_SMTAI.Text + "%'";

DataSet myds = new BLL.ReportManager().GetDateSet_AutoComplete(sql);//这一部分通过SQL语句返回一个DataSet,中间的业务省略了。
if (myds.Tables.Count > 0)
{
if (myds.Tables[0].Rows.Count > 0)
{
this.lsbPNList_SMT.Visible = true;
this.lsbPNList_SMT.Items.Clear();
for (int i = 0; i < myds.Tables[0].Rows.Count; i++)
{
this.lsbPNList_SMT.Items.Add(myds.Tables[0].Rows[i][0]); //将找到的值添加到listBox1索引项中
}
}
else
{
this.lsbPNList_SMT.Visible = false;
}
}
}
lingfeng84 2012-08-24
  • 打赏
  • 举报
回复
怎么控件库里没有[Quote=引用 9 楼 的回复:]
直接使用AutoCompleteBox
[/Quote]
lingfeng84 2012-08-24
  • 打赏
  • 举报
回复
只用一个textbox,两个多了[Quote=引用 8 楼 的回复:]
不会自己写sql么?这个 随便2个 textbox 都可以实现吧 无非就是 当 text_changed 事件发生时 根据 第一个的text 去取 第 2个 text的值
[/Quote]
lingfeng84 2012-08-24
  • 打赏
  • 举报
回复
找不到这个控件[Quote=引用 7 楼 的回复:]
dev lookupedit 有这个功能。
[/Quote]
s08824225 2012-08-24
  • 打赏
  • 举报
回复
直接使用AutoCompleteBox
zhanglong19891129 2012-08-24
  • 打赏
  • 举报
回复
不会自己写sql么?这个 随便2个 textbox 都可以实现吧 无非就是 当 text_changed 事件发生时 根据 第一个的text 去取 第 2个 text的值
OrangeEvan 2012-08-24
  • 打赏
  • 举报
回复
dev lookupedit 有这个功能。
lingfeng84 2012-08-24
  • 打赏
  • 举报
回复
可以具体点么,我新手[Quote=引用 5 楼 的回复:]
肯定可以做 但是你需要重载控件了
[/Quote]
Just4life 2012-08-24
  • 打赏
  • 举报
回复
肯定可以做 但是你需要重载控件了
lingfeng84 2012-08-24
  • 打赏
  • 举报
回复
我用了textbox的AutoCompleteStringCollection类,但是查了类成员,貌似不能实现。[Quote=引用 2 楼 的回复:]
其实现在combobox有AutoComplete自动完成功能。

但不强大
[/Quote]
lingfeng84 2012-08-24
  • 打赏
  • 举报
回复
WinForm可以做出来么[Quote=引用 1 楼 的回复:]
搜索:jQuery autocomplete。
[/Quote]
SQL77 2012-08-24
  • 打赏
  • 举报
回复
其实现在combobox有AutoComplete自动完成功能。

但不强大
全栈极简 2012-08-24
  • 打赏
  • 举报
回复
搜索:jQuery autocomplete。
寂小魔 2012-08-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
C# code



//文本框的文本改变事件
private void txtPN_SMTAI_TextChanged(object sender, EventArgs e)
{
this.lsbPNList_MI.Visible = false;//刚开始listbox不可见
if (txtPN_SMTAI.Text =……
[/Quote]

最近会用到 先留名。
allen0118 2012-08-24
  • 打赏
  • 举报
回复
说白了就是语句SQL的问题,比如说你数据库里面有两列数据,一列是UserCode,一列是UserName,那么你现在想输入UserCode就自动显示UserName,如下:
SELECT UserName FROM TABLE WHERE UserCode + "'%" + this.txtPN_SMTAI.Text + "%'

这样不就行了。
allen0118 2012-08-24
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]
我需要的是,输入数字,下面显示对应的名称

引用 13 楼 的回复:
C# code




//文本框的文本改变事件
private void txtPN_SMTAI_TextChanged(object sender, EventArgs e)
{
this.lsbPNList_MI.Visible = false;//刚开始listbox不可见
if (txtPN_S……
[/Quote]


我晕,你要显示什么东西你自己把它查出来不可以么?你要显示什么东西你就让它显示什么东西,程序是死的,人是活的啊。
AaronNanQH 2012-08-24
  • 打赏
  • 举报
回复
Jquery的不支持中文搜索吧?
lingfeng84 2012-08-24
  • 打赏
  • 举报
回复
我需要的是,输入数字,下面显示对应的名称[Quote=引用 13 楼 的回复:]
C# code




//文本框的文本改变事件
private void txtPN_SMTAI_TextChanged(object sender, EventArgs e)
{
this.lsbPNList_MI.Visible = false;//刚开始listbox不可见
if (txtPN_SMT……
[/Quote]

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧