`
dyllove98
  • 浏览: 1405423 次
  • 性别: Icon_minigender_1
  • 来自: 济南
博客专栏
73a48ce3-d397-3b94-9f5d-49eb2ab017ab
Eclipse Rcp/R...
浏览量:39058
4322ac12-0ba9-3ac3-a3cf-b2f587fdfd3f
项目管理checkList...
浏览量:80060
4fb6ad91-52a6-307a-9e4f-816b4a7ce416
哲理故事与管理之道
浏览量:133167
社区版块
存档分类
最新评论

【DevExpresss】3、LookUpEdit详解

 
阅读更多

哈,今天又用到了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 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.

示例代码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;
        }

上面的够一般使用了,以后有什么更高级的用法再添加了,暂时就这样子了。。。

参考网址:
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

 

分享到:
评论

相关推荐

    devexpress LookUpEdit 多列模糊查询

    在WPF应用开发中,DevExpress是一款广泛使用的UI控件库,提供了丰富的组件,如LookUpEdit。LookUpEdit是一款类似于下拉列表框的控件,通常用于显示和编辑数据源中的记录。在本实例中,我们将深入探讨如何利用...

    C# dev lookupedit使用实例

    C# dev lookupedit使用实例

    dev的LookUpEdit支持自由录入

    3. **自动完成**:LookUpEdit的`AutoCompleteMode`属性可以设置为不同的模式,如Append、Suggest、SuggestAppend等,这些模式可以在用户输入时提供智能提示,提高输入速度。 4. **自定义显示**:通过`DisplayMember...

    LookUpEdit模糊搜索

    3. **实时搜索反馈**:为了在用户输入时实时更新搜索结果,你需要监听`EditValueChanging`事件,并在该事件中触发过滤操作。这样,每当你在编辑框中输入一个字符时,都会根据当前的输入值重新过滤LookUpEdit的数据源...

    LookUpEdit实现能编辑,能绑定

    自定义控件,能编辑,根LookUpedit能绑定数据,能输入过滤

    C#Winform自定义能自由输入且多列查询的LookUpEdit

    该控件能够自由绑定数据源,去掉DevExpress中LookUpEdit只能输入数据源中存在的值的强硬限制,而且支持LookUpEdit中不具备的多列同步查询匹配的功能。自由增加显示列和提供显示值(DisplayMember和ValueMember)设置...

    自定义多列模糊搜索的devCombox

    标签"dev LookUpEdit 模糊"进一步明确了这个组件与DevExpress的LookUpEdit控件有关,并且聚焦于模糊搜索特性。LookUpEdit通常用于显示和编辑列表数据,与ComboBox类似,但通常具有更丰富的功能,如数据绑定、列定义...

    对象和Xml序列化反序列化

    在C#编程中,对象和XML序列化与反序列化是一项关键技能,它允许我们将对象的状态转换为XML格式的字符串,以便存储、传输或解析。本文将深入探讨这个主题,介绍相关概念、步骤以及如何在实际项目中应用。...

    cxLookupEdit 多列模糊查询

    3. **模糊查询**:cxLookupEdit支持在用户输入时动态过滤下拉列表中的项,实现模糊查询。这通常涉及到`FilterCondition`属性的设置,该属性允许你指定一个TValue表达式来定义过滤条件,可以使用通配符进行模糊匹配。...

    Dev下拉选框拼音检索功能

    Dev的下拉选框,包含拼音检索功能,能够实现每个汉字首字母拼音检索。使用方法直接给Item项添加内容。

    GridControl使用方法

    3. **配置 LookUpEdit**:对 LookUpEdit 进行详细设置,如添加列、设置数据源、属性等: - 添加列:`Re1.Columns.Add("FID", "FID"); Re1.Columns.Add("FNAME", "FNAME"); Re1.Columns.Add("FSEX", "FSEX");` - ...

    DevExpress TreeListLookUpEdit 判断有子节点时展开

    DevExpress TreeListLookUpEdit 是一款由DevExpress公司开发的高级控件,用于在Windows Forms应用程序中展示树状结构的数据。这个控件结合了树形视图和下拉列表的优点,提供了丰富的功能,如数据编辑、筛选、排序等...

    Dev-GridLookUpEdit 的用法 动态配置列为查询关键字段

    3. **示例代码**: 以下是一个简单的例子,展示了如何动态配置列并设置查询关键字段: ```javascript var gridLookUpEdit = new dxLookup({ dataSource: yourDataSource, columns: [ { dataField: 'fieldName...

    DevExpress控件使用,及属性介绍

    ### DevExpress控件使用及其属性详解 DevExpress 是一款广泛应用于 .NET 开发的工具包,它提供了丰富的 UI 控件集合,支持多种开发环境如 WinForms、WPF、ASP.NET 等。本文将详细介绍 DevExpress 中的一些常用控件...

    dbgrideh中下拉列表的制作.zip

    3. **配置LookUpEdit** - **设置ListSource**:LookUpEdit的ListSource应设置为TClientDataSet,这样它的下拉列表就会显示TClientDataSet中的数据。 - **设置ListFields**:定义LookUpEdit的显示字段,这通常与...

    developerexpress

    3. **模板列的设置**: 模板列允许用户在表格内进行搜索和编辑。在设计器中,选择"In-Place Editor Repository",添加所需的编辑器类型,如`LookUpEdit`。然后,将模板列与数据列绑定。`LookUpEdit`常用于提供下拉...

    XAF框架实现省市联动

    3. Repository.cs:数据访问层,负责获取省市数据。 4. View.xafml:界面布局文件,定义了UI控件的位置和属性。 5. App.config或Web.config:配置文件,可能包含了数据库连接字符串或其他配置信息。 通过以上步骤和...

    C#悬停显示-MouseMove的用法示例.rar

    悬停显示-MouseMove的用法示例C#源代码 ToolTip TT; TT = new ToolTip(); TT.ToolTipTitle = "轴间距";//提示信息标 TT.SetToolTip(label1, "盘他 \r\n 勾月 \r\n 算了吧");//提示信息内容

    DevExpress学习笔记

    其中,txtAmount 是 CalcEdit 控件,cmbCategory 是 LookUpEdit 控件,m_ErrorProvider 是 DxErrorProvider 组件,m_IncExpTransaction 是业务类实例。 错误提示示例代码如下: ``` private void btnSave_Click...

Global site tag (gtag.js) - Google Analytics