您的位置:首页 > 其它

LookUpEdit和searchLookUpEdit

2018-03-12 11:55 197 查看
为了实现用户只要在输入框中输入查询的关键字就可以自动查询对应的数据,并且将其他需要的字段一起带出来,填充到表达的其他栏中的功能,可谓是踩了不少的坑。
首先一般都会用lookUpEdit这个控件,我刚开始也是这个控件,弄了半天终于实现了功能。刚开始我使用的是lookUpEdit自带的绑定数据源的方法,也就是在属性中直接绑定数据库的链接,然后设置好需要在展示的字段,就可以了。实现起来很简单,查询的速度也很快。
就是点击控件上的三角形,出现如下画面,选择DataSource





绑定数据源,然后按照绑定的顺序操作就好
绑定好了过后皆可以在界面选在valuemember和displaymember已经显示的界面信息;

但是当我想要实现lookUpEdit的EditValueChanged方法为其他文本框添加数值的时候,遇到了一个比较头疼的问题。就是我在lookUpEdit中输入内容时,每输入一个字,EditValueChanged事件就触发一次,但是如果输入两个字过后,看到了我需要的数据时,选择这条数据的时候就出现了问题。lookUpEdit中的值没有错,其他的文本框中的值不对。
我是通过当前选中行的序号去查询其他需要的字段,每次输入两个字过后就出现了相同的问题。



就是姓名和工号对应不上,(lookUpEdit在姓名对应的框),每次工号都是在姓名框中输入第一个关键字时的第一条记录,即使是设置了ItemIndex = -1也不行,所以最后放弃了这个控件。如果谁有好的方法,请不吝赐教哈;

后来选择了searchLookUpedit这个控件,发现比较好用,首先界面就不一样了。对于比如下
这是lookUpEdit的界面:


  
这是searchLookUpEdit的界面:



searchLookUpedit带有查询栏,在查询栏中输入关键字不会触发EditValueChanged,只有选择了数据过后才会触发这个事件。
每次选择数据过后,获取选择数据所在的行号://获取查询栏中的选中行的行号
int index = searchLookUpEdit1.Properties.GetIndexByKeyValue(searchLookUpEdit1.EditValue);获取到行号之后,我是通过SearchLookUpEdit中绑定的数据源获取我想要的数据:this.hRMDBDataSet.Tables[0].Rows[index]["Code"].ToString();数据源添加的方式和上面的一样。这样就可以获取每次选择的数据了,没有出错,信息也是匹配的;感觉比lookUpEdit好用。输入关键字的时候不会直接触发事件,只有在最后确定的时候才会触发EditValueChanged,方便!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: