zoukankan      html  css  js  c++  java
  • XtraEditors三、LookUpEdit、GridLookUpEdit、SearchLookUpEdit

    一、概述

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

    1、层次结构

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

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

    image

    二、LookUpEdit查找编辑器

    image

    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

    imageimage

    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

    image

    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);
  • 相关阅读:
    PAT A1060——string的常见用法详解
    题解-ZJOI2015地震后的幻想乡
    题解-富有物理组的风采
    题解-概率计算器
    题解-CodeForces835F Roads in the Kingdom
    题解-hdu2866 Special Prime
    题解-poj3682King Arthur's Birthday Celebration
    题解-拉格朗日(bzoj3695变种)
    题解-ZeroJudge-c686 高斯符號
    其他-几道物理题
  • 原文地址:https://www.cnblogs.com/springsnow/p/10191663.html
Copyright © 2011-2022 走看看