关于DevExPress 中GridLookUpEdit显示的问题

弋岑 2014-09-24 11:41:06

this.gridLookUpEditDataTable.Properties.DataSource=dt;

当然dt里面是有数据的。关键是搜索的时候,
如果我设置了这两个值那么GridLookUpEdit就不能进行搜索了

this.gridLookUpEditDataTable.Properties.ValueMember = "Id";
this.gridLookUpEditDataTable.Properties.DisplayMember = "Name";

如果我设置了ValueMember 而不设置DisplayMember的值

this.gridLookUpEditDataTable.Properties.ValueMember = "Id";

那么是可以进行搜索,但是GridLookUpEdit显示的值就是System.Data.DataRowView
System.Data.DataRowView这里面也有值,但是我想将Name列的值显示出来,不管怎么设置都不行
请问有没有好点方法
...全文
776 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LLDetails 2015-06-19
  • 打赏
  • 举报
回复
楼主问题 解决了吗?
弋岑 2014-09-25
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
[quote=引用 2 楼 zuxiadulibno 的回复:] 只显示一个列 DataTable的数据源是Id,Name,PYCode,我根据PYCode和Name进行筛选 如果我将DataTable转换成IList数组,就没有问题,但是关键是绑定的数据源是DataTable的,没办法
把DataTable 转成List集合; 参见:

 /// <summary>
        /// 获得集合实体
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static List<T> EntityList<T>(DataTable dt)
        {
            if (dt == null || dt.Rows.Count == 0)
            {
                return null;
            }
            List<T> list = new List<T>();
            T entity = default(T);
            foreach (DataRow dr in dt.Rows)
            {
                entity = Activator.CreateInstance<T>();
                PropertyInfo[] pis = entity.GetType().GetProperties();
                foreach (PropertyInfo pi in pis)
                {
                    if (dt.Columns.Contains(pi.Name))
                    {
                        if (!pi.CanWrite)
                        {
                            continue;
                        }
                        if (dr[pi.Name] != DBNull.Value)
                        {
                            Type t = pi.PropertyType;
                            if (t.FullName == "System.Guid")
                            {
                                pi.SetValue(entity, Guid.Parse(dr[pi.Name].ToString()), null);
                            }
                            else
                            {
                                pi.SetValue(entity, dr[pi.Name], null);
                            }

                        }
                    }
                }
                list.Add(entity);
            }
            return list;
        }
[/quote] 这个我知道,没什么用。
引用 4 楼 duanzi_peng 的回复:
[quote=引用 2 楼 zuxiadulibno 的回复:] 只显示一个列 DataTable的数据源是Id,Name,PYCode,我根据PYCode和Name进行筛选 如果我将DataTable转换成IList数组,就没有问题,但是关键是绑定的数据源是DataTable的,没办法
使用Datatable 绑定,你过滤什么列,就应该把那个列显示出来;[/quote] 我已经试过了,有用的话就不用求助了
  • 打赏
  • 举报
回复
你设置 显示了几个列??
  • 打赏
  • 举报
回复
引用 2 楼 zuxiadulibno 的回复:
只显示一个列 DataTable的数据源是Id,Name,PYCode,我根据PYCode和Name进行筛选 如果我将DataTable转换成IList数组,就没有问题,但是关键是绑定的数据源是DataTable的,没办法
使用Datatable 绑定,你过滤什么列,就应该把那个列显示出来;
  • 打赏
  • 举报
回复
引用 2 楼 zuxiadulibno 的回复:
只显示一个列 DataTable的数据源是Id,Name,PYCode,我根据PYCode和Name进行筛选 如果我将DataTable转换成IList数组,就没有问题,但是关键是绑定的数据源是DataTable的,没办法
把DataTable 转成List集合; 参见:

 /// <summary>
        /// 获得集合实体
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static List<T> EntityList<T>(DataTable dt)
        {
            if (dt == null || dt.Rows.Count == 0)
            {
                return null;
            }
            List<T> list = new List<T>();
            T entity = default(T);
            foreach (DataRow dr in dt.Rows)
            {
                entity = Activator.CreateInstance<T>();
                PropertyInfo[] pis = entity.GetType().GetProperties();
                foreach (PropertyInfo pi in pis)
                {
                    if (dt.Columns.Contains(pi.Name))
                    {
                        if (!pi.CanWrite)
                        {
                            continue;
                        }
                        if (dr[pi.Name] != DBNull.Value)
                        {
                            Type t = pi.PropertyType;
                            if (t.FullName == "System.Guid")
                            {
                                pi.SetValue(entity, Guid.Parse(dr[pi.Name].ToString()), null);
                            }
                            else
                            {
                                pi.SetValue(entity, dr[pi.Name], null);
                            }

                        }
                    }
                }
                list.Add(entity);
            }
            return list;
        }
弋岑 2014-09-24
  • 打赏
  • 举报
回复
只显示一个列 DataTable的数据源是Id,Name,PYCode,我根据PYCode和Name进行筛选 如果我将DataTable转换成IList数组,就没有问题,但是关键是绑定的数据源是DataTable的,没办法

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧