如题所示,我在ComboBox控件中输入关键字信息,原意是想根据输入的信息从数据库中匹配后在绑定到该控件的下拉列表中,为什么我在输入信息时,总是只能输入一个字符,再输入第二个字符时,前面输入的字符就消失了?
ComboBox控件的KEYDOWN KEYPRESS KEYUP TEXTCHANGE方法都是试过了,这是为什么了?
下面的代码是写在事件中的方法:
if (multiColumnComboBox1.Text.Length != 0) { string strSQL = @"select top 10 * from stu where helpcode like '%" + record + "%'"; DataSet ds = new DataSet(); conn.Open(); SqlDataAdapter da = new SqlDataAdapter(strSQL, conn); da.Fill(ds); conn.Close(); multiColumnComboBox1.DataSource = ds.Tables[0]; multiColumnComboBox1.DisplayMember = "name"; multiColumnComboBox1.ValueMember = "id"; multiColumnComboBox1.SelectedIndex = -1; }
你每输入一次字符页面就刷新了,前面的字符就初始化为空了,
正确的做法是ajax.
是WINFORM里面的ComboBox控件,不是WEB程序,没有AJAX概念。
@失落の熊熊: 哈哈,没看清
你没有
multiColumnComboBox1.DataBind()吧,大哥
multiColumnComboBox1.DataSource = ds.Tables[0];
这句话就是为他绑定数据源,ComboBox控件没有databind方法,那是要自己写的。
我的问题应该和这个没有关系吧。
@失落の熊熊: 额。。看来我和楼上大哥一样,俺们都是web开发
@失落の熊熊: 我觉得是不是绑定后把值给干掉了,这时候你不应该绑定了,应该做个循环加上去,从索引1开始加,0就是你输入的内容不动
@饥饿定义我:有这个可能,具体怎么做呢?
结果是对的?试下绑定后设置:
multiColumnComboBox1.Text=record
我当时设置record这个变量就是为了做这步的,也不行,我试过的。
@失落の熊熊:
试了下,通过设置DataSource来绑定的都有问题,只能用Items.Add去添加项。
TextChanged的时候先删除原来的项(但又不能清空,要保留一项,清空也会导致它的Text发生变化),再把查询的通过循环添加进去。
绑定时单独那一个控件会有类似于刷新的操作
果断自己循环添加