一、概述

https://documentation.devexpress.com/WindowsForms/DevExpress.XtraEditors.LookUpEditBase.class

1、层次结构

LookUpEdit、GridLookUpEdit、SearchLookUpEdit、TimeZoneEdit,TreeListLookUpEdit都继承于PopBaseAutoSearchaEdit。

都具有弹出框和搜索的功能。

二、LookUpEdit查找编辑器

1、绑定数据源:

lookUpEdit1.

Properties.ValueMember

 = "实际要用的字段";   //相当于editvalue
lookUpEdit1.

Properties.DisplayMember

 = "要显示的字段";    //相当于text
lookUpEdit1.

Properties.DataSource

 = "数据源";

2、判断是否选择下拉框:

if (this.lookUpEdit1.

EditValue == null

 || this.lookUpEdit1.EditValue.ToString() == "nulltext")
{
//提示信息,说明未选择下拉框
}

3、设置或清空nulltext值: 

lookUpEdit1.

Properties.NullText

 = "请选择...";
lookUpEdit1.Properties.NullText = null;//清空值

4、使用LookUpEdit的值:

string 变量1 = this.lookUpEdit1.

EditValue

.ToString(); //是lookUpEdit1.Properties.ValueMember值
string 变量2 = this.lookUpEdit1.

Text

.Trim();    //是lookUpEdit1.Properties.DisplayMember 的值

5、选择项

lookUpEdit1.

ItemIndex

 = 0;   //选择第一项
lookUpEdit1.ItemIndex = -1; //无选项,此时显示的是nulltext值。其实这个地方只要EditValue==null,lookUpEdit1就显示NullText
lookUpEdit1.

EditValue

 = value;//自动搜索DataSource,选择与之匹配的值,没有的情况下赋值null ,value的值必须与ValueMember的数据类型一致。

6、弹出框及搜索模式:

lookUpEdit1.Properties.ImmediatePopup = true; //在输入框按任一可见字符键时立即弹出下拉窗体。
lookUpEdit1.Properties.AutoSearchColumnIndex = 0;// 设置自动搜索的栏位序号,下拉窗体第一个栏位为0,依此类推,此属性配合SearchMode = OnlyInPopup时有效。
lookUpEdit1.Properties.SearchMode = DevExpress.XtraEditors.Controls.SearchMode.OnlyInPopup; //自动搜索定位模式

7、SearchMode 搜索模式详解:

  1. OnlyInPopup :在下拉窗体能显示匹配结果(蓝底白字),但在输入框内不显示。
    配合ImmediatePopup=True时使用,当用户在输入框按任一可见字符键时立即弹出下拉窗体,并跟据输入的字符从头部开始匹配AutoSearchColumnIndex属性指定栏位字段的值,第一个栏位为0。
  2. AutoComplete: 能在输入框显示匹配的数据,并且下拉窗体显示匹配的记录。
    配合ImmediatePopup=True时使用,当用户在输入框按任一可见字符键时立即弹出下拉窗体,并在输入框自动完成您想要输入的数据,同时下拉窗体自动匹配最佳记录。AutoComplete模式仅匹配DisplayMember对应字段的值。
  3. AutoFilter(默认值):能在输入框显示匹配的数据,并过滤过不想要的记录。
    配合ImmediatePopup=True时使用,当用户在输入框按任一可见字符键时立即弹出下拉窗体,并在输入框自动完成您想要输入的数据,同时下拉窗体自动过滤掉不匹配的记录。

8、添加列

添加显示的列:找到属性列表---添加要绑定的列。如果没有添加列 根据属性名称 自动生成列

9、实例绑定方法

DataSet ds;
lookUpEdit1.Properties.DataSource = ds.Tables[0];
lookUpEdit1.Properties.ValueMember = "daID";
lookUpEdit1.Properties.DisplayMember = "xm";
lookUpEdit1.EditValue = "5"; //双击显示下拉列表
lookUpEdit1.Properties.ShowDropDown = ShowDropDown.DoubleClick;
lookUpEdit1.Properties.ImmediatePopup = true;//显示下拉列表
lookUpEdit1.Properties.TextEditStyle = TextEditStyles.Standard;//允许输入
lookUpEdit1.Properties.DropDownRows = 12;//默认显示的行数
lookUpEdit1.Properties.NullText = "";//清空默认值 //自动填充列
lookUpEdit1.Properties.PopulateColumns();
//或者添加列:
lookUpEdit1.Properties.Columns.Add(new LookUpColumnInfo("ProductClassID", 5, "类别代码")); //设置列属性
//lookUpEdit1.Properties.Columns[0].Visible = false;
lookUpEdit1.Properties.Columns[1].Caption = "姓名";
lookUpEdit1.Properties.Columns[1].Width = 120;
lookUpEdit1.Properties.Columns[0].FormatString = "000000";//列格式设置 //下拉框自适应宽度
lookUpEdit1.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
lookUpEdit1.Properties.BestFit();
//或者设置总宽度
lookUpEdit1.Properties.PopupWidth = 500; //选择第一项
lookUpEdit1.ItemIndex = 0;

10、EditValueChanged值改变事件

private void lookUpEdit1_EditValueChanged(object sender, EventArgs e)
{
//使用属性
string daID = this.lookUpEdit1.EditValue.ToString();
string xm = this.lookUpEdit1.Text.Trim(); //使用方法
DataRowView row = this.lookUpEdit1.GetSelectedDataRow() as DataRowView;//是lookUpEdit选择的整行的数据源,这里绑定的是DataTable
//Order order = this.lookUpEdit1.GetSelectedDataRow() as Order; if (row != null)
{
this.txt1.Text = row["ShortName"].ToString();
}
}

11、处理字段名在数据源中找不到(未绑定列)GetNotInListValue事件

private void LookUpEdit1_GetNotInListValue(object sender, GetNotInListValueEventArgs e)
{
e.Value = (e.RecordIndex + 1).ToString() + ".";
}

三、GridLookUpEdit

1、显示行号

private void gridLookUpEdit1View_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)
{
if (e.Info.IsRowIndicator && e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString();
}
}

2、设置根据多列筛选功能

GridLoolUpEdit 默认  是根据 DisplayMember 绑定的字段  进行模糊筛选。

private void gridLookUpEdit1_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
{
BeginInvoke(new MethodInvoker(delegate ()
{
GridLookUpEdit edit = sender as GridLookUpEdit;
GridView gridView = edit.Properties.View as GridView;
//获取GriView私有变量
FieldInfo fi = gridView.GetType().GetField("extraFilter", BindingFlags.NonPublic | BindingFlags.Instance); List columnsOperators = new List();
foreach (GridColumn col in gridView.VisibleColumns)
{
if (col.Visible && col.ColumnType == typeof(string))
columnsOperators.Add(new DevExpress.Data.Filtering.FunctionOperator(DevExpress.Data.Filtering.FunctionOperatorType.Contains,
new DevExpress.Data.Filtering.OperandProperty(col.FieldName), new DevExpress.Data.Filtering.OperandValue(edit.Text)));
}
string filterCondition = new GroupOperator(GroupOperatorType.Or, columnsOperators).ToString(); //或者明确指定列
//BinaryOperator op1 = new BinaryOperator("Id", "%" + edit.AutoSearchText + "%", BinaryOperatorType.Like);
//BinaryOperator op2 = new BinaryOperator("Model", "%" + edit.AutoSearchText + "%", BinaryOperatorType.Like);
//string filterCondition = new GroupOperator(GroupOperatorType.Or, new CriteriaOperator[] { op1, op2, op3 }).ToString(); fi.SetValue(gridView, filterCondition);
//获取GriView中处理列过滤的私有方法
MethodInfo mi = gridView.GetType().GetMethod("ApplyColumnsFilterEx", BindingFlags.NonPublic | BindingFlags.Instance);
mi.Invoke(gridView, null);
}));
}

3、添加显示的数据列

4、实例绑定方法

//数据绑定
DataSet ds;
gridLookUpEdit1.Properties.DataSource = ds.Tables[0];
gridLookUpEdit1.Properties.ValueMember = "daID";
gridLookUpEdit1.Properties.DisplayMember = "xm"; // 将EditValue绑定到“订单详情”表的ProductID字段;EditValue与ValueMember字段的值匹配。
gridLookUpEdit1.DataBindings.Add("EditValue", dvMain, "ProductID"); //双击显示下拉列表
gridLookUpEdit1.Properties.ShowDropDown = ShowDropDown.DoubleClick;//双击显示下拉列表
gridLookUpEdit1.Properties.ImmediatePopup = true;//显示下拉列表
gridLookUpEdit1.Properties.AutoComplete = false;
gridLookUpEdit1.Properties.TextEditStyle = TextEditStyles.Standard;//允许输入
gridLookUpEdit1.Properties.NullText = "";//清空默认值
gridLookUpEdit1.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
gridLookUpEdit1.Properties.View.OptionsView.ShowAutoFilterRow = true;
gridLookUpEdit1.Properties.PopupFilterMode = DevExpress.XtraEditors.PopupFilterMode.Contains;
gridLookUpEdit1.Properties.ShowFooter = false; //自动填充列
gridLookUpEdit1.Properties.View.OptionsBehavior.AutoPopulateColumns = false;
//或者添加列:
gridLookUpEdit1.Properties.View.Columns.Add(new GridColumn { FieldName = "ProductClassID", VisibleIndex = 1, Caption = "类别代码", }); //设置列属性
//gridLookUpEdit1.Properties.View.Columns[0].Visible = false;
gridLookUpEdit1.Properties.View.Columns[1].Caption = "姓名";
gridLookUpEdit1.Properties.View.Columns[1].Width = 120;
gridLookUpEdit1.Properties.View.Columns[0].DisplayFormat.FormatString = "000000";//列格式设置 //下拉框自适应宽度
gridLookUpEdit1.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
gridLookUpEdit1.Properties.View.BestFitColumns(); //或者设置总宽度
gridLookUpEdit1.Properties.PopupFormWidth = 500;//或者设置总宽度 //选择第一项
gridLookUpEdit1.Properties.View.SelectRow(0);

四、SearchLookUpEdit

1、添加显示的数据列

在属性列表中 Properties  -> view  就可以打开设计器进行编辑

2、实例绑定方法

//数据绑定
DataSet ds;
searchLookUpEdit1.Properties.DataSource = ds.Tables[0];
searchLookUpEdit1.Properties.ValueMember = "daID";
searchLookUpEdit1.Properties.DisplayMember = "xm"; // 将EditValue绑定到“订单详情”表的ProductID字段;EditValue与ValueMember字段的值匹配。
searchLookUpEdit1.DataBindings.Add("EditValue", dvMain, "ProductID"); //双击显示下拉列表
searchLookUpEdit1.Properties.ShowDropDown = ShowDropDown.DoubleClick;//双击显示下拉列表
searchLookUpEdit1.Properties.ImmediatePopup = true;//显示下拉列表
searchLookUpEdit1.Properties.AutoComplete = false;
searchLookUpEdit1.Properties.TextEditStyle = TextEditStyles.Standard;//能否够输入内容进行检索(还是仅仅能使用选择输入)
searchLookUpEdit1.Properties.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; //文本居中对齐
//默认值
searchLookUpEdit1.Properties.NullText = "------请选择------";
searchLookUpEdit1.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
//显示不显示grid上第一个空行,也是用于检索的应用
searchLookUpEdit1.Properties.View.OptionsView.ShowAutoFilterRow = true;
searchLookUpEdit1.Properties.PopupFilterMode = DevExpress.XtraEditors.PopupFilterMode.Contains;
//是否显示底部
searchLookUpEdit1.Properties.ShowFooter = false; //自动填充列
searchLookUpEdit1.Properties.View.OptionsBehavior.AutoPopulateColumns = false;
//或者添加列:
searchLookUpEdit1.Properties.View.Columns.Add(new GridColumn { FieldName = "ProductClassID", VisibleIndex = 1, Caption = "类别代码", }); //设置列属性
//lookUpEdit1.Properties.Columns[0].Visible = false;
searchLookUpEdit1.Properties.View.Columns[1].Caption = "姓名";
searchLookUpEdit1.Properties.View.Columns[1].Width = 120;
searchLookUpEdit1.Properties.View.Columns[0].DisplayFormat.FormatString = "000000";//列格式设置 //下拉框自适应宽度
searchLookUpEdit1.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
searchLookUpEdit1.Properties.View.BestFitColumns(); //或者设置总宽度
searchLookUpEdit1.Properties.PopupFormWidth = 500;//或者设置总宽度 //选择第一项
searchLookUpEdit1.Properties.View.SelectRow(0);

XtraEditors三、LookUpEdit、GridLookUpEdit、SearchLookUpEdit的更多相关文章

  1. XtraEditors一、总体介绍

    一.所有编辑器的公共功能 全部都可以绑定数据: 全部都可以独立使用或用于由 Developer Express 提供的容器控件 (XtraGrid.XtraVerticalGrid.XtraTreeL ...

  2. wpf LookUpEdit PopupContentTemplate

    <dxg:LookUpEdit Name="searchLookUpEdit" HorizontalAlignment="Stretch" PopupHe ...

  3. DevExpress 组件

    最近看到 伍华聪 的博客里, DevExpress 组件那个效果很好看,特别是 LookUpEdit GridLookUpEdit 这两个控件,完美改善了 WinForm 里的 ComboBox 今天 ...

  4. Gridview LookupEdit gridLookUpEdit z

    LookupEdit一般用法: 绑定数据源:                                 lookUpEdit.Properties.ValueMember = 实际要用的字段;  ...

  5. 仿LookUpEdit多列模糊搜索,功能比GridLookUpEdit强大,比SearhLookUpEdit方便

    先上效果图: 控件调用示例:(devexpress使用了16.2.6.0版本,可以根据实际需要进行版本转换) using System; using System.Collections.Generi ...

  6. DevExpress 学习使用之 LookUpEdit

    我的机器上,Winform 控件中的 LookUp 有1+3 种,在我们国家也被称为 4 种,你们那儿呢? 这 1+3 种 LookUpEdit 分别是 LookUpEdit.GridLookUpEd ...

  7. DEV组件LookupEdit,ComboBoxEdit绑定数据源

    LookupEdit可以绑定数据表(DataTable)或对象数据组(Object List)作为数据源,下拉窗体可自定显示栏位. 绑定数据源需要设置三个参数:DisplayMember ,Value ...

  8. DevExpress gridLookUpEdit 实现多选

    一:创建类GridCheckMarksSelection   #region Fileds RepositoryItemGridLookUpEdit _currentRepository; prote ...

  9. DevExpress之lookupedit

    DevExpress中的lookupedit的使用方法. 绑定数据源:     lookupedit.properties.valuemember = 实际要用的字段;   //相当于editvalu ...

随机推荐

  1. Java操作elasticsearch

    使用 Maven 工程,我的 pom 文件如下所示: <dependencies> <dependency> <groupId>org.elasticsearch& ...

  2. css3 transform(变形)笔记

    Transform字面上就是变形,改变的意思.在CSS3中transform主要包括以下几种:旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix. 一.旋转 ...

  3. NSLog演化

    使用下面代码打印行号,功能函数,以及要打印的内容 #if DEBUG #define MBLog(format, ...) NSLog((@"%s--[Line:%d]--" fo ...

  4. 使用css实现炫酷的横屏滚动效果

    炫酷的横屏滚动效果css实现 DEMO: https://codepen.io/kobako/pen/BxVLLm 我们对滚动条都不陌生.平时浏览的网页,进度条通常是垂直方向的,内容从上往下排列.但是 ...

  5. MySQL中文编码设置为utf-8

    MySQL中文编码设置为utf-8 原文地址:http://blog.csdn.net/wangnan537/article/details/47819167 1. 查看MySQL数据库的默认编码有如 ...

  6. K:单词查找树(Trie)

      单词查找树,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串.Trie可以看作是一个确定有限状态自动机(DFA).与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中 ...

  7. ef和mysql使用(二)--让mysql支持EntityFramework.Extended实现批量更新和删除

    我们都知道Entity Framework 中不能同时更新多条记录,但是一个老外写的扩展库可以实现此功能EntityFramework.Extended,但是如何是mysql数据库要怎么实现呢 首先实 ...

  8. 序列化模块2 pickle

    import pickle # dump的结果是bytes,dump用的f文件句柄需要以wb的形式打开,load所用的f是'rb'模式# 支持几乎所有对象的序列化# 对于对象的序列化需要这个对象对应的 ...

  9. 通过编写聊天程序来熟悉python中多线程及socket的用法

    1.引言 Python中提供了丰富的开源库,方便开发者快速就搭建好自己所需要的应用程序.本文通过编写基于tcp/ip协议的通信程序来熟悉python中socket以及多线程的使用. 2.python中 ...

  10. [WEB面试题] web前端面试题HTML+CSS第一弹,个人整理部分面试题汇总

    以下内容仅供参考,网络整理而来 1.XHTML和HTML是什么有什么不同的区别 HTML是一种基本的WEB网页设计语言 XHTML可扩展超文本标记语言,是一种置标语言,表现方式与超文本标记语言(HTM ...