DevExpress 之 GridControl 自定义列
Ø 前言
DevExpress 控件大家应该都有所了解,使用这个框架实现B/S或C/S的,都是非常出色的。本文主要讨论下 GridControl 中如何【自定义列】或【计算列】,可使用以下两种方法实现:
1. 方法一
使用 DevExpress.XtraGrid.Columns.GridColumn 的 UnboundExpression 。
1. 设置 UnboundExpression 属性为:Iif([Sex] == 0 Or [Sex] == 1, Iif([Sex] == 1, '男', '女'), '未知')
2. 设置 UnboundType 属性为:String
2) 显示商品状态(可发、残疵、锁定、破损、临保、过期),但数据库存储的是 1 至 6。
1. 设置 UnboundExpression 属性为:Iif([ProductStateId] >= 1 And [ProductStateId] <= 6, Iif([ProductStateId] == 1, '可发', Iif([ProductStateId] == 2, '残疵', Iif([ProductStateId] == 3, '锁定', Iif([ProductStateId] == 4, '破损', Iif([ProductStateId] == 5, '临保', Iif([ProductStateId] == 6, '过期', '未知')))))), '无')
2. 设置 UnboundType 属性为:String
Ø 注意:
1. 绑定数据的列不能将自身设置为计算列,例如在 Sex 列设置:Iif([Sex] == 0 Or [Sex] == 1, Iif([Sex] == 1, '男', '女'), '未知'),将报错。
2. 自定义列的命名必须与数据绑定列不一致,例如:DisplaySex。
2. 方法二
使用 DevExpress.XtraGrid.Views.Grid.GridView 的 CustomColumnDisplayText :假设 gridView1 已经绑定[Order Details]表中的 Quantity、UnitPrice 和 Discount字段,下面再为 gridView1 添加一个非绑定列"TotalMoney",用于显示订单明细每一项的总金额,计算公式:Quantity * UnitPrice * (1 - Discount),代码如下:
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Columns;
private void Form1_Load(object sender, System.EventArgs e)
{
gridControl1.ForceInitialize();
GridColumn unbColumn = gridView1.Columns.AddField("TotalMoney");
unbColumn.VisibleIndex = gridView1.Columns.Count;
unbColumn.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;
unbColumn.OptionsColumn.AllowEdit = false;
unbColumn.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
unbColumn.DisplayFormat.FormatString = "c";
unbColumn.AppearanceCell.BackColor = Color.LemonChiffon;
}
decimal getTotalValue(int index)
{
DataRow row = dataSet.Tables["Order Details"].Rows[index];
decimal unitPrice = Convert.ToDecimal(row["UnitPrice"]);
decimal quantity = Convert.ToDecimal(row["Quantity"]);
decimal discount = Convert.ToDecimal(row["Discount"]);
return unitPrice * quantity * (1 - discount);
}
private void gridView1_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e)
{
if (e.Column.FieldName == "TotalMoney" && e.IsGetData)
e.Value = getTotalValue(e.ListSourceRowIndex);
}
4. 使用数据源的部分类,添加绑定列(字段)
Ø 思路:
1) 通常我们绑定 GridView 会使用 DataTable、List<Class>、System.Windows.Forms.BindingSource 等等。后面两者其实都是一个类对象的集合,而这个类则对应数据库中的一张表,或者一个视图,总之就是一个类(class)。
2) 既然是一个类,我们就可以对这个类进行扩展(添加额外的字段)。
3) 例如:我们有一个表格(GridView),其中有商品数量、价格列,而我们还需要一个【小计】列(计算列),这时我们就可以在数据源类扩展一个字段,用于展示小计。再将该字段绑定到 GridView 中,就实现了扩展字段添加绑定列的需求。最后就是实现计算,在 GridView.CellValueChanged 等事件中为小计字段赋值即可。
DevExpress 之 GridControl 自定义列的更多相关文章
- DevExpress中GridControl自定义汇总列值(有选择性的汇总)
今天碰到有同事遇到这个方面的需求,贴一下吧. private void gvTop_CustomSummaryCalculate(object sender, CustomSummaryEventAr ...
- 实现在DevExpress.XtraGrid.GridControl的列头绘制复选框以实现全选的功能
首先新建一个Win Form测试项目,拖一个GridControl控件到窗体上. public partial class Form1 : Form { public Form1() { Initia ...
- devexpress表格gridcontrol实现列统计,总计,平均,求和等。
1.在许多项目中,经常要实现对某些列的统计.devexpress控件gridcontrol实现这些功能只需要设置某些属性,就可以达到要求了.以下例举了一个统计班级总数,人数总计,分数总计的案例.效果图 ...
- DevExpress.XtraGrid.GridControl 实现自定义tooltip
DevExpress.XtraGrid.GridControl 控件默认的tooltip显示的每一个单元格的文本值,但是实际工作中会出现各种需求.我这里就有一个列是折扣率显示的值是0-1之间的两位小数 ...
- DevExpress ASP.NET 使用经验谈(8)-ASPxGridView自定义列和基本事件
为演示本节示例,我们在原来Users表增加[性别Gender].[兴趣爱好Hobbies],[CreateTime创建时间],[ModifyTime]修改时间这4个字段, ALTER TABLE [d ...
- DevExpress中GridControl列转义的实现方法
/// <summary> /// CustomColumnDisplayText Helper /// </summary> /// <param name=" ...
- Devexpress 之gridControl
1.gridControl如何去掉主面板? 鼠标右键Run Designer=>OptionsView => ShowGroupPanel=False: 2.gridControl如何设置 ...
- DevExpress之GridControl控件小知识
DevExpress之GridControl控件小知识 一.当代码中的DataTable中有建数据关系时,DevExpress 的 GridControl 会自动增加一个子视图 .列名也就是子表的字段 ...
- DevExpress.XtraGrid.GridControl中数据源的绑定问题
在利用DevExpress.XtraGrid.GridControl作为一个可编辑的表格控件时,在利用控件之前,先将一个初始化的DataTable对象作为GridControl的数据源进行绑定.可是在 ...
随机推荐
- CSS居中的几种方式总结
1.水平居中的 margin:0 auto; 这个是用于子元素上的,前提是不受float影响 <style type="text/css"> .box{ width: ...
- thinkphp5 如何监听sql?
第一步 在database配置文件中开启 // 是否需要进行SQL性能分析'sql_explain' => true, 第二步 在需要测试的sql前,使用以下demo Db::listen(fu ...
- Arch Linux下Visual Stdio Code在格式化C代码时报错
libtinfo.so.5: cannot open shared object file: No such file or directory Arch Linux下Visual Stdio Cod ...
- [luogu3834][可持久化线段树 1(主席树)]
题目链接 思路 裸的主席树.查询的时候,通过相减求出区间内左子树中数的个数a.然后判断要查找的k是否比这个z要大.如果比这个值大,那么就去右子树中查找第k - z大,否则去左子树中查找第k大. 代码 ...
- 关于dp(背包)
有关背包,我这几天可是尽受其苦(不得不靠我聪颖的背诵代码的大脑来进行一波操作) Step 1 01背包 关于01背包的主要代码: ;j<=m;j++) { for(int i=n;i& ...
- Echarts关于仪表盘
https://blog.csdn.net/zc763375777/article/details/53837391 来无事,制作不一样的图标一发,领导让把仪表盘做成百分条,我TM也是醉了,大体样式如 ...
- eclipse添加market ,maven
添加market 转载自http://blog.csdn.net/buptdavid/article/details/42423247 Eclipse Marketplace是个插件应用商店,很实用的 ...
- (二叉树 bfs) leetcode 199. Binary Tree Right Side View
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...
- M1-Flask-Day4
今日内容概要: 1.git使用 2.redis基本操作 3.celery应用 4.在flask中使用celery 5.saltstack的基本使用 基础回顾: 1.关于FLASK -基本使用 路由 视 ...
- nlp知识
1.词集模型 将每个词的出现与否作为一个特征,不考虑词频.也就是一个词在文本在文本中出现1次和多次特征处理是一样的. 2.词袋模型 与词集相比,会考虑词频 sklearn中 CountVectoriz ...