DevExpress LookUpEdit 初始化(数据加载) 底层类

(1)三个效果

  1>传的参数较多,对数据表无要求,但可以设置下拉列的宽度和标题

      2>传的参数很少,对数据表有要求(必须是处理好的)

      3>传的参数一般,对数据表无要求,但不可以设置下拉列的宽度和标题

1)

2)

3)

(2)后台代码

底层类:

  /// <summary>
        /// 初始化LookUpEdit控件 (加载数据表中的一列或多列,且显示下拉列标题,可以设置下拉列的宽度)
        /// </summary>
        /// <param name="lookUpEdit">空间名称</param>
        /// <param name="fields">下拉要显示的列</param>
        /// <param name="captions">下拉要显示的列标题</param>
        /// <param name="widths">下拉显示列的宽度  如果null 宽度为系统默认 </param>
        /// <param name="dt">绑定的数据表</param>
        /// <param name="valueMember">绑定列</param>
        /// <param name="displayMember">显示列</param>
        /// <param name="dropDownRows">下拉最多显示个数 如果为0,显示全部</param>
        public static void InitLookUpEdit(DevExpress.XtraEditors.LookUpEdit lookUpEdit,
           string[] fields, string[] captions, int[] widths,
           DataTable dt, string valueMember, string displayMember, int dropDownRows)
        {
            lookUpEdit.Properties.NullText = "---请选择---";
            lookUpEdit.Properties.Columns.Clear();
            if (fields.Length != captions.Length)
            {
                return;
            }
            for (int i = 0; i < fields.Length; i++)
            {
                if (widths != null)
                {
                    if (fields.Length != widths.Length)
                    {
                        return;
                    }
                    lookUpEdit.Properties.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo(fields[i], widths[i], captions[i]));
                    lookUpEdit.Properties.Columns[i].Visible = widths[i] == 0 ? false : true;
                }
                else
                {
                    lookUpEdit.Properties.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo(fields[i], captions[i]));
                }
                lookUpEdit.Properties.Columns[i].Alignment = DevExpress.Utils.HorzAlignment.Center;

            }

            if (widths == null)
                lookUpEdit.Properties.Columns[valueMember].Visible = false;

            lookUpEdit.Properties.DataSource = dt;
            lookUpEdit.Properties.ValueMember = valueMember;
            lookUpEdit.Properties.DisplayMember = displayMember;
            lookUpEdit.Properties.ShowHeader = true;
            lookUpEdit.Properties.ShowFooter = false;
            if (dropDownRows == 0)
            {
                lookUpEdit.Properties.DropDownRows = dt.Rows.Count + 1;
            }
            else
            {
                lookUpEdit.Properties.DropDownRows = dt.Rows.Count > dropDownRows ? dropDownRows : dt.Rows.Count;
            }
        }

        /// <summary>
        /// 初始化LookUpEdit控件 (下拉加载数据表中的所有列,且不显示下拉列标题、不设置宽度)
        /// </summary>
        /// <param name="lookUpEdit">控件名称</param>
        /// <param name="dt">绑定的数据表</param>
        /// <param name="valueMember">绑定列</param>
        /// <param name="displayMember">显示列</param>
        /// <param name="dropDownRows">下拉最多显示个数 如果为0,显示全部</param>
        public static void InitLookUpEdit(DevExpress.XtraEditors.LookUpEdit lookUpEdit,
          DataTable dt, string valueMember, string displayMember, int dropDownRows)
        {
            if (!dt.Columns.Contains(valueMember) && dt.Columns.Contains(displayMember))
            {
                return;
            }
            lookUpEdit.Properties.NullText = "---请选择---";
            lookUpEdit.Properties.Columns.Clear();

            foreach (DataColumn col in dt.Columns)
                lookUpEdit.Properties.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo(col.ColumnName));

            lookUpEdit.Properties.DataSource = dt;

            lookUpEdit.Properties.Columns[valueMember].Visible = false;

            lookUpEdit.Properties.ValueMember = valueMember;
            lookUpEdit.Properties.DisplayMember = displayMember;
            lookUpEdit.Properties.ShowHeader = false;
            lookUpEdit.Properties.ShowFooter = false;
            if (dropDownRows == 0)
            {
                lookUpEdit.Properties.DropDownRows = dt.Rows.Count;
            }
            else
            {
                lookUpEdit.Properties.DropDownRows = dt.Rows.Count > dropDownRows ? dropDownRows : dt.Rows.Count;
            }
        }

        /// <summary>
        /// 初始化LookUpEdit控件 (下拉加载数据表中一列或多列,且不显示下拉列标题、不设置宽度)
        /// </summary>
        /// <param name="lookUpEdit">控件名称</param>
        /// <param name="dt">绑定的数据表</param>
        /// <param name="fields">下拉要显示的列(要包含绑定列)</param>
        /// <param name="valueMember">绑定列</param>
        /// <param name="displayMember">显示列</param>
        /// <param name="dropDownRows">下拉最多显示个数 如果为0,显示全部</param>
        public static void InitLookUpEdit(DevExpress.XtraEditors.LookUpEdit lookUpEdit,
            DataTable dt, string[] fields, string valueMember, string displayMember, int dropDownRows)
        {
            //数据表中是否存在fields的列
            if (fields != null)
            {
                for (int i = 0; i < fields.Length; i++)
                {
                    if (!dt.Columns.Contains(fields[i]))
                    {
                        MessageBox.Show("LookUpEdit控件 列名不在数据表中");
                        return;
                    }
                }
            }

            //过滤列 且去掉重复
            DataView dv = new DataView(dt);
            dt = dv.ToTable(true, fields);

            InitLookUpEdit(lookUpEdit, dt, valueMember, displayMember, dropDownRows);
        }

调用:

 //显示特定列 设置下拉列标题和宽度
            InitLookUpEdit(lookUpEdit1,
                new string[] { "Stu_Number", "Stu_Name" },
                new string[] { "学号", "姓名" },
                new int[] { 50, 80 },
                dt, "Stu_ID", "Stu_Name", 5);

            //显示全部列 不可以设置标题和宽度
            InitLookUpEdit(lookUpEdit2, dt, "Stu_ID", "Stu_Name", 5);

            //显示特定列 不可以设置标题和宽度
            InitLookUpEdit(lookUpEdit3, dt, new string[] { "Stu_Number", "Stu_Name", "Stu_ID" }, "Stu_ID", "Stu_Name", 5);

时间: 2024-08-01 23:51:53

DevExpress LookUpEdit 初始化(数据加载) 底层类的相关文章

DevExpress ChartControl大数据加载时有哪些性能优化方法

DevExpress ChartControl加载大数据量数据时的性能优化方法有哪些? 关于图表优化,可从以下几个方面解决: 1.关闭不需要的可视化的元素(如LineMarkers, Labels等): Series.View.LineMarkerOptions.Visible =false. 2. 关闭图表的滚动与缩放功能,手动调整范围,这样将大大减少所需计算的个数. 3. 将 ChartControl.RefreshDataOnRepaint属性设为false 4. 将 ChartContr

PyTorch 数据集类 和 数据加载类 的一些尝试

最近在学习PyTorch,  但是对里面的数据类和数据加载类比较迷糊,可能是封装的太好大部分情况下是不需要有什么自己的操作的,不过偶然遇到一些自己导入的数据时就会遇到一些问题,因此自己对此做了一些小实验,小尝试. 下面给出一个常用的数据类使用方式: def data_tf(x): x = np.array(x, dtype='float32') / 255 # 将数据变到 0 ~ 1 之间 x = (x - 0.5) / 0.5 # 标准化,这个技巧之后会讲到 x = x.reshape((-1

arcgis python 使用光标和内存中的要素类将数据加载到要素集

使用光标和内存中的要素类将数据加载到要素集 import arcpy arcpy.env.overwriteOutput = True arcpy.ImportToolbox("http://flame7/arcgis/services;BufferByVal", "servertools") # List of coordinates coordinates = [[-117.196717216, 34.046944853], [-117.186226483, 3

实现虚拟模式的动态数据加载Windows窗体DataGridView控件 .net 4.5 (一)

实现虚拟模式的即时数据加载Windows窗体DataGridView控件 .net 4.5 原文地址 :http://msdn.microsoft.com/en-us/library/ms171624.aspx  译 Q:77811970 实现虚拟模式的原因之一 DataGridView控制只检索数据,因为它是必要的. 这就是所谓的 即时数据加载 . 如果你正在与一个非常大的表在一个远程数据库,例如,您可能希望避免启动延迟,只检索所需的数据显示和检索额外的数据只有当用户新行滚动到视图. 如果客户

浅谈Entity Framework中的数据加载方式

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Architecture.aspx,其中的一系列文

DICOM:DICOM三大开源库对比分析之“数据加载”

背景: 上一篇博文DICOM:DICOM万能编辑工具之Sante DICOM Editor介绍了DICOM万能编辑工具,在日常使用过程中发现,"只要Sante DICOM Editor打不开的数据,基本可以判定此DICOM文件格式错误(准确率达99.9999%^_^)".在感叹Sante DICOM Editor神器牛掰的同时,想了解一下其底层是如何实现的.通过日常使用以及阅读软件帮助手册推断其底层依赖库很可能是dcmtk,就如同本人使用dcmtk.fo-dicom.dcm4che3等

Android4.0图库Gallery2代码分析(二) 数据管理和数据加载

Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 2012-09-07 11:19 8152人阅读 评论(12) 收藏 举报 代码分析android相册优化工作 Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 一 图库数据管理 Gallery2的数据管理 DataManager(职责:管理数据源)- MediaSource(职责:管理数据集) - MediaSet(职责:管理数据项).DataManager中初始化所有的数据源(LocalSo

解决考试系统高并发数据加载不正确问题

背景: 现在这版考试系统分为学生考试端和后台管理端.同一登陆页,学生输入学号.密码进入考试界面,管理员输入用户名.密码进入后台管理界面.平时没有学生考试时,后台管理界面学院下拉框可以正确的从数据库读取并加载数据,但有学生考试时,后台管理界面学院下拉框获取的数据有时为空,有时为脏数据. 我们所做的尝试: 1.再现数据加载不正确场景 用LoadRunner压力测试程序模拟255人在线考试的过程,发现当考试人数达到50人时,后台管理界面开始出现上述数据加载不正确问题. 2.验证数据库是否产生了死锁 我

LruCache缓存处理及异步加载图片类的封装

Android中的缓存处理及异步加载图片类的封装 一.缓存介绍: (一).Android中缓存的必要性: 智能手机的缓存管理应用非常的普遍和需要,是提高用户体验的有效手段之一. 1.没有缓存的弊端: 流量开销:对于客户端——服务器端应用,从远程获取图片算是经常要用的一个功能,而图片资源往往会消耗比较大的流量. 加载速度:如果应用中图片加载速度很慢的话,那么用户体验会非常糟糕. 那么如何处理好图片资源的获取和管理呢?异步下载+本地缓存 2.缓存带来的好处: 1. 服务器的压力大大减小: 2. 客户