【DevExpresss】3、LookUpEdit详解
关于枚举类型SearchMode的定义:
OnlyInPopup : 配合ImmediatePopup=True时使用,当用户在输入框按任一可见字符键时立即弹出下拉窗体,并跟据输入的字符从头部开始匹配AutoSearchColumnIndex属性指定栏位字段的值,第一个栏位为0.
特点:在下拉窗体能显示匹配结果(蓝底白字),但在输入框内不显示。
效果图如下:
AutoComplete: 配合ImmediatePopup=True时使用,当用户在输入框按任一可见字符键时立即弹出下拉窗体,并在输入框自动完成您想要输入的数据,同时下拉窗体自动匹配最佳记录。AutoComplete模式仅匹配DisplayMember对应字段的值。
特点:能在输入框显示匹配的数据,并且下拉窗体显示匹配的记录。
效果图如下:
AutoFilter: 配合ImmediatePopup=True时使用,当用户在输入框按任一可见字符键时立即弹出下拉窗体,并在输入框自动完成您想要输入的数据,同时下拉窗体自动过滤掉不匹配的记录。
特点:能在输入框显示匹配的数据,并过滤过不想要的记录。
二、具体的使用:
看过了上面属性的介绍,一般的使用已经够了,但有的情况下,允许用户自由输入,即输入的值不一定是在绑定的数据源中,光用上面的属性就不行了,因为就算你输入的内容不在数据库中,控件也会帮你选中数据源中第一条数据,清空你输入的数据,恼火。。可以用下面的方法解决:
The LookUp editor allows a user to enter values which cannot be found in the lookup list. A programmer should handle this situation, otherwise a new value is lost. The LookUp editor provides a?ProcessNewValue?event for this.
First of all, you should set the?SearchMode?property to?OnlyInPopup?and?TextEditStyle?to?Standard?to enable free text entry.
There are two common approaches for handling the ProcessNewValue event:
1. Immediately insert the new record in the lookup table and generate a new ID for it.
2. Display a dialog, where a user can set values for a new data row.
private void LookUpEdit1_ProcessNewValue(object sender, DevExpress.XtraEditors.Controls.ProcessNewValueEventArgs e) { DataRow Row; RepositoryItemLookUpEdit Edit = ((LookUpEdit)sender).Properties; if (e.DisplayValue == null || Edit.NullText.Equals(e.DisplayValue) || string.Empty.Equals(e.DisplayValue)) return; using (Form2 f = new Form2()) { f.ItemID = "(Auto Number)"; f.ItemName = e.DisplayValue.ToString();//ItemName是Form2中的一个属性,return Form2中一个文本框的值 if (f.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { e.DisplayValue = f.ItemName; Row = LookupTable.NewRow(); Row["Name"] = f.ItemName; LookupTable.Rows.Add(Row); } } e.Handled = true; }上面的够一般使用了,以后有什么更高级的用法再添加了,暂时就这样子了。。。
参考网址:
https://www.devexpress.com/Support/Center/p/A238.aspx
http://www.cnblogs.com/liran/archive/2009/02/28/1400402.html
http://blog.sina.com.cn/s/blog_6d1c583c01011qiv.html
?