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);
备注(常用):
//总宽度
lookUpEdit1.Properties.PopupWidth = lookUpEdit1.Width;
//默认选择第一项 ,如果 =-1 显示NullText
lookUpEdit1.ItemIndex = 0;
//自适应宽度
lookUpEdit1.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
//下拉列表个数
lookUpEdit1.Properties.DropDownRows = dt.Rows.Count;
//列格式
lookUpEdit1.Properties.Columns[0].FormatString = "000000";
//列文字居中
lookUpEdit1.Properties.Columns[0].Alignment = DevExpress.Utils.HorzAlignment.Center;
//显示的值 dispalyMember
string str1 = lookUpEdit1.Text;
//绑定的值 ValueMember
string str2 = lookUpEdit1.EditValue.ToString();
版权声明:本文为博主原创文章,未经博主允许不得转载。
DevExpress LookUpEdit 初始化(数据加载) 底层类的更多相关文章
- DevExpress ChartControl大数据加载时有哪些性能优化方法
DevExpress ChartControl加载大数据量数据时的性能优化方法有哪些? 关于图表优化,可从以下几个方面解决: 1.关闭不需要的可视化的元素(如LineMarkers, Labels等) ...
- vue初始化数据加载
使用created钩子 import AppLayout from '@/components/app-layout' import axios from 'axios' export default ...
- Tomcat启动时加载数据到缓存---web.xml中listener加载顺序(例如顺序:1、初始化spring容器,2、初始化线程池,3、加载业务代码,将数据库中数据加载到内存中)
最近公司要做功能迁移,原来的后台使用的Netty,现在要迁移到在uap上,也就是说所有后台的代码不能通过netty写的加载顺序加载了. 问题就来了,怎样让迁移到tomcat的代码按照原来的加载顺序进行 ...
- PyTorch 数据集类 和 数据加载类 的一些尝试
最近在学习PyTorch, 但是对里面的数据类和数据加载类比较迷糊,可能是封装的太好大部分情况下是不需要有什么自己的操作的,不过偶然遇到一些自己导入的数据时就会遇到一些问题,因此自己对此做了一些小实 ...
- arcgis python 使用光标和内存中的要素类将数据加载到要素集 学习:http://zhihu.esrichina.com.cn/article/634
学习:http://zhihu.esrichina.com.cn/article/634使用光标和内存中的要素类将数据加载到要素集 import arcpy arcpy.env.overwriteOu ...
- 浅谈Entity Framework中的数据加载方式
如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Arc ...
- 实现虚拟模式的动态数据加载Windows窗体DataGridView控件 .net 4.5 (一)
实现虚拟模式的即时数据加载Windows窗体DataGridView控件 .net 4.5 原文地址 :http://msdn.microsoft.com/en-us/library/ms171624 ...
- Android Volley和Gson实现网络数据加载
Android Volley和Gson实现网络数据加载 先看接口 1 升级接口 http://s.meibeike.com/mcloud/ota/cloudService POST请求 参数列表如下 ...
- Android4.0图库Gallery2代码分析(二) 数据管理和数据加载
Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 2012-09-07 11:19 8152人阅读 评论(12) 收藏 举报 代码分析android相册优化工作 Androi ...
随机推荐
- 学习PHP爬虫--《Webbots、Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)》
<Webbots.Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)> 译者序 前言 第一部分 基础概念和技术 第1章 本书主要内容3 1.1 发现互联网的真 ...
- html meta标签用法详细介绍
meta是html语言head区的一个辅助性标签. 在页面中都有类似这样的html代码: <head> <meta http-equiv="content-Type&quo ...
- Navicat Premium 未保存的SQL如何找回 ?
在使用 Navicat Premium 编辑SQL的过程中为防止程序意外崩溃,已经将编辑的SQL都已经备份. 备份存放目录地址:C:\Users\{登录用户名}\Documents\Navicat\M ...
- c++11的for新用法 (重新练习一下for_each)
看到手册的代码里面有个for的很奇怪的用法,用了一把 http://www.cplusplus.com/reference/unordered_set/unordered_set/insert/ ...
- 2016030401 - java性能优化建议
转载自:http://www.open-open.com/lib/view/open1399884636989.html#_label20 1.没有必要时不要使用静态变量 使用静态变量的目的是提高程序 ...
- Activity的跳转与传值(转载)
Activity跳转与传值,主要是通过Intent类来连接多个Activity,以及传递数据. Intent是Android一个很重要的类.Intent直译是“意图”,什么是意图呢?比如你想从这个 ...
- 预处理命令#define #undef #if #endif 的基本用法
C#的预处理命令其实还是蛮有用的,但是真正使用过得人不多,这个介绍一下平时用的比较多的预处理命令中的几个:#define,#undef ,#if,#endif.除此之外还有一些预处理命令#warnin ...
- Python join()方法
描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法: str.join(sequence) 参数 sequence -- 要连接的 ...
- [OI笔记] 最长上升子序列与网络流建模
与最长上升子序列相关的网络流问题: 给定一个序列 A[1..n] ,求出 A 的最长上升子序列长度.并且回答下列询问: (1) 如果每个点只能用一次,能从 A 中取出几个最长上升子序列? (2) 如果 ...
- cf 219D
树形dp; 思想: 把正向边赋值为0:反向边赋值为1:然后求出点到其他点的最小距离: 两次dfs: 第一次是从下往上:记录每个点到所有子树中需要改变的边的条数: 第二次是自上往下:由父节点求子节点到所 ...