DevExpresss LookUpEdit详解

2024-08-24 08:38

本文主要是介绍DevExpresss LookUpEdit详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DevExpresss LookUpEdit详解


一、属性的基本介绍:

绑定数据源:
lookUpEdit.Properties.ValueMember = 实际要用的字段; //相当于Editvalue
lookUpEdit.Properties.DisplayMember =要显示的字段; //相当于Text
lookUpEdit.Properties.DataSource = 数据源;

常用属性:

Popupwidth 下拉框宽度
Nulltxt 空时的值
DropDownRows 下拉框行数
AllowNullInput =True,可用Ctrl+Delete清空選擇內容

判断是否选择下拉框:
if(this.lookUpEdit.Editvalue==null ||this.lookUpEdit.Editvalue.tostring()=="nulltext")
{
//提示信息,说明未选择下拉框
}
清空nullText值: 
lookUpEdit.Properties.nulltext=null;

设置nullText值:
    lookUpEdit.Properties.nulltext=“请您选择”;
使用lookUpEdit1的值:
变量=this.lookUpEdit.Editvalue.Tostring()  //是LookUpEdit.Properties.ValueMember的值
变量=this.lookUpEdit.Text.Trim()      //是LookUpEdit.Properties.DisplayMember 的值

 特别值得注意的是,有时候我们要使用lookUpEdit来实现combox的一些效果,在实际的使用过程中在程序加载的时候会默认的选择第一项,它的设置是:

lookUpEdit.Itemindex=0; //选择第一项

lookUpEdit.Itemindex=-1; //无选项,此时显示的是nullText值 其实这个地方只要Editvalue==null,lookUpEdit就显示nullText

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

介绍三个重要的属性:
1. LookUpEdit.Properties.ImmediatePopup 在输入框按任一可见字符键时立即弹出下拉窗体。
2. LookUpEdit.Properties.AutoSearchColumnIndex 设置自动搜索的栏位序号,下拉窗体第一个栏位为0,依此类推,此属性配合SearchMode=OnlyInPopup时有效。
3. LookUpEdit.Properties.SearchMode 自动搜索定位模式
 

关于枚举类型SearchMode的定义:

C# Code:
// Summary:
// Enumerates search modes for a lookup edior.
public enum SearchMode
{
// Summary:
// The incremental search is enabled only when the dropdown window is open.
// If the window is closed, the user can modify the text in the edit box. However
// these changes are ignored.
// When the dropdown is open the incremental search is performed against the
// column whose index is specified by the DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit.AutoSearchColumnIndex
// property. The header of this column contains the search icon (binoculars).
// The user can click a specific column header to perform the search against
// this column.
// The following screenshot shows a sample lookup editor. The incremental search
// is performed against the second column.
OnlyInPopup = 0,
//
// Summary:
// Enables the automatic completion feature. In this mode, when the dropdown
// is closed, the text in the edit box is automatically completed if it matches
// a DevExpress.XtraEditors.Repository.RepositoryItemLookUpEditBase.DisplayMember
// field value of one of dropdown rows.
// When the dropdown is open, the automatic completion feature is disabled but
// the editor allows you to perform an incremental search in the same manner
// as when DevExpress.XtraEditors.Controls.SearchMode.OnlyInPopup mode is active.
AutoComplete = 1,
//
// Summary:
// Enables the incremental filtering feature. When you type within the edit
// box, the editor automatically opens the dropdown window and displays only
// records whose DevExpress.XtraEditors.Repository.RepositoryItemLookUpEditBase.DisplayMember
// field value starts with the characters typed. Other records are not displayed.
// If you enter a value that does not match any record, the dropdown window
// will not contain any rows.
// The following image shows a lookup editor when AutoFilter mode is enabled.
AutoFilter = 2,
}

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 aProcessNewValue event for this.

First of all, you should set the SearchMode property to OnlyInPopup andTextEditStyle 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.

示例代码1
List<std_MetaInfo> source = DataHelper.MetaInfos;//数据源EditorHelper.BindLookUpEdit(lueStdNO, source, "StdNO", "StdNO");//lueStdNO.ProcessNewValue += lue_ProcessNewValue;        //实现自由输入功能        private void lue_ProcessNewValue(object sender, ProcessNewValueEventArgs e)        {            RepositoryItemLookUpEdit edit = ((LookUpEdit)sender).Properties;            if (e.DisplayValue == null || edit.NullText.Equals(e.DisplayValue) || string.Empty.Equals(e.DisplayValue))                return;//为空或者选择项不变,不执行后续操作            std_MetaInfo meta = new std_MetaInfo();            meta.StdNO = e.DisplayValue.ToString();            source.Add(meta);//在数据源中添加一条记录,如果数据源是DataTable,添加DataRow,其他形式数据源解决方法类似            e.Handled = true;        }public class EditorHelper{        public static void BindLookUpEdit(LookUpEdit lue, object source, string value, string displayName)        {            lue.Properties.DataSource = source;            lue.Properties.DisplayMember = displayName;            lue.Properties.ValueMember = value;            lue.Properties.NullText = "";            lue.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard            lue.Properties.SearchMode = SearchMode.AutoFilter;//自动过滤掉不需要显示的数据,可以根据需要变化        }}
示例代码2
        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;        }

这篇关于DevExpresss LookUpEdit详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1101989

相关文章

详解MySQL中DISTINCT去重的核心注意事项

《详解MySQL中DISTINCT去重的核心注意事项》为了实现查询不重复的数据,MySQL提供了DISTINCT关键字,它的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据... 目录DISTINCT 六大注意事项1. 作用范围:所有 SELECT 字段2. NULL 值的特殊处

SQL BETWEEN 语句的基本用法详解

《SQLBETWEEN语句的基本用法详解》SQLBETWEEN语句是一个用于在SQL查询中指定查询条件的重要工具,它允许用户指定一个范围,用于筛选符合特定条件的记录,本文将详细介绍BETWEEN语... 目录概述BETWEEN 语句的基本用法BETWEEN 语句的示例示例 1:查询年龄在 20 到 30 岁

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可