rzt_tao 发表于 2017-2-27 10:40:39

关于ComboBoxEdit如何绑定实体集问题

本帖最后由 rzt_tao 于 2017-2-27 10:39 编辑

DevExpress 的ComboBoxEdit的Item虽然是Object类型,但是绑定实体集的时候,显示的Item是类的名称,这样并不是我们想要的,我们渴望的是能够看到指定那个属性字段,SelectItem的时候返回的是一个实体,
大家想一想为什么我们看到的是下拉类别是类的名称?因为这个类的ToString方法,知道这个切入点就好办了,我们就从重写类的ToString方法入手。
定义一个Student类,重写其ToString方法:
class student
{
public string name { get; set; }
public int id { get; set; }
/// <summary>
/// 重写ToString的方法
/// </summary>
/// <returns></returns>
public override string ToString()
{
return name;
}
当然,大伙更喜欢能够随时指定某个属性字段作为其显示的Item,这个很简单,定义一个构造函数,利用反射就可以了。
**** Hidden Message *****
解决关键核心问题,下面就正式使用。
**** Hidden Message *****

测试结果:


当然有些人觉得这样有点麻烦,其实DevExpress提供了其他的控件操作,LookUpEdit和GridLookUpEdit,这个两个控件都提供了直接绑定数据源的属性设置,
也允许设置指定列为显示字段和实际值字段,这样就轻松多了。
大致设置如下(gridlookUpedit类似具体可以网上一搜一大把):
lookUpEdit.Properties.DataSource=ss;
lookUpEdit.Properties.ValueMember="id";
lookUpEdit.Properties.DisplayMember="name";

设置显示列大致如下:
lookUpEdit设置:

gridLookUpEdit设置(其实就是内嵌了一个GridControl的控件,设置跟设置GridView方式一样的)



阿力 发表于 2017-2-27 11:12:41

看看有啥好办法

stoneca 发表于 2017-3-14 13:30:57

只能先回复了
精通两年以上多人在线开的扩展开发验标准库的使用能完成相应

gam334 发表于 2017-3-16 13:12:07

看看有啥好办法

巧笑 发表于 2017-3-16 16:20:30

学习学习

775253959 发表于 2017-4-7 16:54:43

不知道为什么微软自带的是有这个功能的,在DEV怎么就没了呢 不是继承的吗

rzt_tao 发表于 2017-4-13 10:44:30

775253959 发表于 2017-4-7 16:54
不知道为什么微软自带的是有这个功能的,在DEV怎么就没了呢 不是继承的吗

自己看看基类就知道不是继承,Devexpress自己开发的一套控件。

userlm 发表于 2017-4-13 10:47:12

看看,正用到

1002068421 发表于 2017-4-13 10:48:10

{:2_25:}一直用lookup来写,。。。牛逼

mayinpei 发表于 2017-4-13 10:49:23

{:2_25:}{:2_25:}{:2_25:}{:2_25:}

panyijun 发表于 2017-4-13 10:59:08

正好需要看看

joseph 发表于 2017-6-8 19:29:40

厉害了我的涛哥

qinfengyan 发表于 2017-7-18 17:37:47

谢谢分享

HG123456 发表于 2017-8-14 11:13:36

要不要这样啊

ifu25 发表于 2017-8-21 20:08:26

这个用的非常频繁,学习了,感谢。

ChurchVin 发表于 2017-10-12 17:18:49

学习一下

je6rry 发表于 2017-10-20 15:51:46

谢谢楼主分享

ilezhi 发表于 2017-10-27 10:17:10

学习了,感谢分享~~~~~~~~

lujiachao 发表于 2017-10-27 13:35:46

等我看了隐藏内容再给你回复

lujiachao 发表于 2017-10-27 15:46:17

我这里说一种其他方法啊!
imageComboBoxEditAccEmpId.Properties.Items.Add(new ImageComboBoxItem(drAccountType["NAME"].ToString(), drAccountType["ID"].ToString(), -1));NAME,ID就是方法传过来的datetable的字段。其中ID是绑定的字段,NAME是下拉显示的字段。这样就会出现一个问题,下拉,我字符串拼接 ID,NAME 。但显示我只想要他显示NAME。怎么解决呢?我在imagecombox上放了一个textedit写了个方法就解决了。#region imageComboBoxEditAccEmpId 值改变事件      private void imageComboBoxEditAccEmpId_EditValueChanged(object sender, EventArgs e)      {            string str = imageComboBoxEditAccEmpId.Text.ToString();            if (str != "" && str.Contains(","))            {               string[] sArray = str.Split(',');               textEditShow.Text = sArray;                            }      }
      #endregion如图所示

hzx94 发表于 2017-10-31 10:30:02

谢谢分享。

luoxiaoji2 发表于 2017-12-5 15:27:52

谢谢分享~~~~~~

我来拾豆豆 发表于 2018-1-30 10:10:12

非常需要的,谢谢

gzsfz 发表于 2018-3-31 18:38:54

学习学习

bbc999212 发表于 2018-5-3 15:09:07

THANKS FOR SHARE

脚滑的狐狸 发表于 2018-7-10 10:21:35

看一下了

shizhiqingquan 发表于 2018-7-10 10:58:06

yys,非常感谢!

apptester 发表于 2018-7-10 11:20:19

这个学习一下

ytangfugui 发表于 2018-7-19 15:01:31

想学习学习,最近也遇到了问题,希望是我需要的

BaronQiu 发表于 2018-8-27 16:08:05

看看如何实现
页: [1] 2
查看完整版本: 关于ComboBoxEdit如何绑定实体集问题