zoukankan      html  css  js  c++  java
  • DevExpress中的lookupedit的使用方法详解

    摘自: http://www.evget.com/zh-CN/Info/catalog/17631.html

    概述:本文详细介绍了DevExpress中的lookupedit的使用方法。

    绑定数据源:  

    1
    2
    3
    lookupedit.properties.valuemember = 实际要用的字段;   //相当于editvalue
    lookupedit.properties.displaymember =要显示的字段;    //相当于text
    lookupedit.properties.datasource = 数据源;

    判断是否选择下拉框:

    1
    2
    3
    4
    if(this.lookupedit.editvalue==null ||this.lookupedit.editvalue.tostring()=="nulltext")
    {
    //提示信息,说明未选择下拉框
    }

    清空nulltext值: 

    1
    lookupedit.properties.nulltext=null;

    设置nulltext值:

    1
    lookupedit.properties.nulltext=“请您选择”;

    使用lookupedit1的值:

    1
    2
    变量=this.lookupedit.editvalue.tostring()  //是ookupedit.properties.valuemember的值
    变量=this.lookupedit.text.trim()      //是ookupedit.properties.displaymember 的值

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

    1
    2
    3
    4
    5
    lookupedit.itemindex=0;   //选择第一项
     
    lookupedit.itemindex=-1; //无选项,此时显示的是nulltext值 其实这个地方只要editvalue==null,lookupedit就显示nulltext
     
    lookupedit1.editvalue=value;//自动搜索datasouse,选择与之匹配的值,没有的情况下赋值null ,value的值必须与valuemember的数据类型一致。

    在gridview中你选择一条记录,那么利用bindingsourse.current就可以获得你要选择的数据,如果是实体类就可以(object)进行强制转换,然后 进行一些其它的操作。

    但是,lookupedit在你选择一条记录的时候,bindingsourse.current的值永远是第一条记录,要想获得你选择数据源的记录,必须利用lookupedit.getdatasoursebykeyvalue(keyvalue),(object)进行强制转这样就可以了。但是你要注意的就是keyvalue必须是你数据源中的主键,否则你获取的是相同键的第一个记录。如果遇到多键值决定一条记录怎么办呢?

    这个问题dev express也有他相应的解决办法,就是用到gridlookupedit,它该是gridview和lookupedit的结合体吧,利用这个你就可以选择主键相同的记录了,利用gridlookupeditview.getdatasourcerowindex(gridlookupeditview.focusedrowhandle)就可以了。

    实例绑定方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    //绑定lookUpEdit
             private void BoundData()
             {
                 string sql = "select daID,xm,sfzh from baseinfo";
                 DataSet ds = Archives.DataAccess.DataSql.Query(sql);
                 if (ds != null)
                 {
                     int rows = ds.Tables[0].Rows.Count;
      
                    lookUpEdit1.EditValue = "daID";
                     lookUpEdit1.Properties.ValueMember = "daID";
                     lookUpEdit1.Properties.DisplayMember = "xm";
                     lookUpEdit1.Properties.DataSource = ds.Tables[0];
      
                    //自适应宽度
                     //lookUpEdit1.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
      
                    //填充列
                     lookUpEdit1.Properties.PopulateColumns();
      
                    //设置列属性
                     //lookUpEdit1.Properties.Columns[0].Visible = false;
                     lookUpEdit1.Properties.Columns[1].Caption = "姓名";
                     lookUpEdit1.Properties.Columns[2].Caption = "身份证号";
                     lookUpEdit1.Properties.Columns[1].Width = 120;
                     lookUpEdit1.Properties.Columns[2].Width = 300;
      
                    //控制选择项的总宽度
                     lookUpEdit1.Properties.PopupWidth = 500;
      
                    //列格式设置
                     lookUpEdit1.Properties.Columns[0].FormatString = "000000";
      
                    //选择第一项
                     lookUpEdit1.ItemIndex = 0;
                 }
             }
      
            //值改变事件
             private void lookUpEdit1_EditValueChanged(object sender, EventArgs e)
             {
                 string daID = this.lookUpEdit1.EditValue.ToString(); //是ookUpEdit.Properties.ValueMember的值
                 string xm = this.lookUpEdit1.Text.Trim();
             }
  • 相关阅读:
    初识云计算:历史、服务、架构
    云计算术语扫盲
    什么是 VxLAN?
    Linux用户态与内核态通信的几种方式
    Linux 命令多到记不住?这个开源项目帮你一网打尽!
    云计算时代,数据中心架构三层到大二层的演变
    Linux网络命令必知必会之瑞士军刀 nc(netcat)
    Docker 网络模型之 macvlan 详解,图解,实验完整
    基于alpine构建镜像报错temporary error (try again later)?
    win7环境下,vagrant,在启动虚拟机的时候报错io.rb:32:in `encode': incomplete "xC8" on GBK (Encoding::InvalidByteSequenceError)
  • 原文地址:https://www.cnblogs.com/wuyifu/p/3370507.html
Copyright © 2011-2022 走看看