DevExpress GridControl功能总结
写在前面,Dev控件已经很久了,功能也很强大,截止到现在我编写文档出来的Dev的版本已经到了14.1了,看了Demo真的很强大,效果也很好,结合自己这一个月开发,分享一下自己研究过后的经验,不让大家走更多的弯路
- DevExpress安装顺序
- GridControl基本样式设置
- GridControl常用事件和描述
- GridControl右键菜单
- GridControl全选和反选
- GridControl添加小计功能
- GridControl固定表头
1.安装从未如此简单
Dev的安装文件已经放大百度云中方便大家下载:DevExpress 12.2.7,下载后按照图片数字顺序依次安装,这就是Dev 12.2.7,你值得拥有。
if (bandedGridView1.GetFocusedDataRow() == null) return;
//运单编号
var columnValue= bandedGridView1.GetFocusedRowCellValue("绑定列字段名称").ToString();注意事项:使用VS2012和2010搭配DevExpress 12.2.7这个版本一起开发是最好的,工具箱暂时无法导入VS2013

2.基本样式设置,你会吗?
面对第一次使用GridControl,
搞不懂GridControl下面为什么有一堆的GridView呢?后来想想,原来GridControl是一个大容器,下面有很多视图,那么就是操作视图,下面是我的一些常用样式设置。
bandedGridView1.IndicatorWidth = 40; //自增列宽度
bandedGridView1.OptionsView.ColumnAutoWidth = false; //自动调整列宽,使所有列的宽度和视图的宽度匹配
bandedGridView1.OptionsCustomization.AllowSort = false;//禁止用户对数据进行排序操作
bandedGridView1.OptionsCustomization.AllowColumnResizing = false; //禁止各列头改变列宽
bandedGridView1.VertScrollVisibility = ScrollVisibility.Auto; //显示垂直滚动条
bandedGridView1.HorzScrollVisibility = ScrollVisibility.Auto; //显示水平滚动条
bandedGridView1.OptionsMenu.EnableColumnMenu = false; //禁止列头上的菜单
bandedGridView1.OptionsMenu.EnableFooterMenu = false; //禁止页脚上的菜单
bandedGridView1.OptionsMenu.EnableGroupPanelMenu = false; //禁止分组面板上的菜单
bandedGridView1.OptionsNavigation.UseTabKey = false; //不使用TAB/SHIFT+TAB移动焦点
bandedGridView1.OptionsBehavior.Editable = false;//不允许编辑
bandedGridView1.OptionsBehavior.ReadOnly = true;//只读
3.这些事件你会常用
CustomDrawRowIndicator:DGV显示自增行号
e.Appearance.TextOptions.HAlignment = HorzAlignment.Far;
if (e.Info.IsRowIndicator)
{
if (e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString(CultureInfo.InvariantCulture);
}
else if (e.RowHandle < 0 && e.RowHandle > -1000)
{
e.Info.Appearance.BackColor = Color.AntiqueWhite;
e.Info.DisplayText = "G" + e.RowHandle;
}
}
RowCellStyle:GridView隔行变色
bandedGridView1.Appearance.OddRow.BackColor = Color.White; // 设置奇数行颜色 // 默认也是白色 可以省略
bandedGridView1.OptionsView.EnableAppearanceOddRow = true; // 使能 // 和和上面绑定 同时使用有效
bandedGridView1.Appearance.EvenRow.BackColor = Color.FromArgb(, , ); // 设置偶数行颜色
bandedGridView1.OptionsView.EnableAppearanceEvenRow = true; // 使能 // 和和上面绑定 同时使用有效
if (e.RowHandle == bandedGridView1.FocusedRowHandle)
{
e.Appearance.Font = new Font("宋体", , FontStyle.Bold);
}
FocusedRowChanged:选中行改变绑定行数据到对应控件中
if (bandedGridView1.GetFocusedDataRow() == null) return;//判断当前选中行是否为null
//返回值
var columnValue= bandedGridView1.GetFocusedRowCellValue("绑定列字段名称").ToString();
4.添加右击菜单一个很常用的功能

添加ContextMenuStrip控件,然后自定义按钮,可以找一些16*16的小图标点缀一下,很不错

这样一个右键菜单就已经绑定成功
5.GridControl全选和反选
这是一个比较难的问题,这里我结合网上寻找的资料总结了一个实体类贴上源代码
//-------------------------------------------------------------------------------------
// All Rights Reserved , Copyright (C) 2014 , ZTO , Ltd .
//------------------------------------------------------------------------------------- using System.Drawing;
using System.Windows.Forms;
using DevExpress.XtraEditors.Repository; namespace ZTO.WayBill.Utilities
{
/// <summary>
/// Dev GridControl 创建全选复选框
///
/// 修改纪录
///
/// 2014-5-30 版本:1.0 YangHengLian 创建主键,注意命名空间的排序。
///
/// 版本:1.0
///
/// <author>
/// <name>YangHengLian</name>
/// <date>2014-5-30</date>
/// </author>
/// </summary>
public class DevControlHelper
{
/// <summary>
/// 创建复选框
/// </summary>
/// <param name="e"></param>
/// <param name="chk"></param>
public static void DrawCheckBox(DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e, bool chk)
{
RepositoryItemCheckEdit repositoryCheck = e.Column.ColumnEdit as RepositoryItemCheckEdit;
if (repositoryCheck != null)
{
Graphics g = e.Graphics;
Rectangle r = e.Bounds;
DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo info;
DevExpress.XtraEditors.Drawing.CheckEditPainter painter;
DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs args;
info = repositoryCheck.CreateViewInfo() as DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo;
painter = repositoryCheck.CreatePainter() as DevExpress.XtraEditors.Drawing.CheckEditPainter;
info.EditValue = chk;
info.Bounds = r;
info.CalcViewInfo(g);
args = new DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs(info, new DevExpress.Utils.Drawing.GraphicsCache(g), r);
painter.Draw(args);
args.Cache.Dispose();
}
}
/// <summary>
/// 全选,反选
/// </summary>
/// <param name="gridView"></param>
/// <param name="fieldName"></param>
/// <param name="currentStatus"></param>
/// <returns></returns>
public static bool ClickGridCheckBox(DevExpress.XtraGrid.Views.Grid.GridView gridView, string fieldName, bool currentStatus)
{
bool result = false;
if (gridView != null)
{
gridView.ClearSorting();//禁止排序
gridView.PostEditor();
DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo info;
Point pt = gridView.GridControl.PointToClient(Control.MousePosition);
info = gridView.CalcHitInfo(pt);
if (info.InColumn && info.Column != null && info.Column.FieldName == fieldName)
{
for (int i = ; i < gridView.RowCount; i++)
{
gridView.SetRowCellValue(i, fieldName, !currentStatus);
}
return true;
}
}
return result;
}
}
}
下面是使用步骤
窗体加载事件添加一些代码
private bool _mCheckStatus; //GridControl全选,作为全局变量,默认false
private void FrmInputBill_Load(object sender, EventArgs e)
{
bandedGridView1.OptionsBehavior.Editable = false;
bandedGridView1.OptionsBehavior.ReadOnly = true;
var col = new BandedGridColumn { FieldName = "Check", Visible = true, VisibleIndex = , ColumnEdit = new RepositoryItemCheckEdit() };
col.OptionsColumn.AllowEdit = true; //CheckBox可以编辑改变
gridBand1.Columns.Insert(, col);
bandedGridView1.Click += bandedGridView1_Click;
bandedGridView1.CustomDrawColumnHeader += bandedGridView1_CustomDrawColumnHeader;
bandedGridView1.DataSourceChanged += bandedGridView1_DataSourceChanged;
//这里绑定数据源
}
#region GridControl支持全选事件 private void bandedGridView1_Click(object sender, EventArgs e)
{
if (DevControlHelper.ClickGridCheckBox(this.bandedGridView1, "Check", _mCheckStatus))
{
_mCheckStatus = !_mCheckStatus;
}
} private void bandedGridView1_CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e)
{
if (e.Column != null && e.Column.FieldName == "Check")
{
e.Info.InnerElements.Clear();
e.Painter.DrawObject(e.Info);
DevControlHelper.DrawCheckBox(e, _mCheckStatus);
e.Handled = true;
}
} private void bandedGridView1_DataSourceChanged(object sender, EventArgs e)
{
GridColumn column = this.bandedGridView1.Columns.ColumnByFieldName("Check");
if (column != null)
{
column.Width = ;
column.OptionsColumn.ShowCaption = false;
column.ColumnEdit = new RepositoryItemCheckEdit();
}
} #endregion
全选和反选
6.添加小计功能
第一步
第二步
加载完数据之后绑定 bandedGridView1.Columns["绑定字段列名"].Summary.Add(DevExpress.Data.SummaryItemType.Count, "BILL_CODE", "总计:{0}条"); //添加小计功能,在指定的列上添加一个统计对象
删除动作修改对应的小计信息,代码如下:
bandedGridView1.Columns["绑定字段列名"].Summary[0].DisplayFormat = string.Format("小计{0}条", bandedGridView1.RowCount);
7.固定表头记录了一些GridControl的常用代码,分享给大家,如果有兴趣的可以到我的群
里进行提问,不仅包括GridControl,其他的控件我也研究了,运用到项目中 将来的你一定会感激现在拼命的自己
DevExpress GridControl功能总结的更多相关文章
- DevExpress GridControl使用方法
一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 (1).gridView.AddN ...
- DevExpress GridControl 使用方法技巧 总结 收录整理
一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 ().gridView.AddNe ...
- DevExpress GridControl使用(转)
DevExpress GridControl使用 (一)原汁原味的表格展示 Dev控件中的表格控件GridControl控件非常强大.不过,一些细枝末节的地方有时候用起来不好找挺讨厌的.使用过程中,多 ...
- DevExpress GridControl+UserControl实现分页
志向不过是记忆的奴隶,生气勃勃地降生,但却很难成长. —— 莎士比亚 时隔一年,我写随笔真的很随意,想起了就来博客园写写,想不起来就任由懒惰支配着我.不过我到觉得这不是什么坏事,你不用为了完成某事而让 ...
- DevExpress GridControl 显示外部图片
如果数据源中只包含图片的链接,如何在DevExpress GridControl的一列中显示外部图片? 要实现该功能,可通过非绑定列的方式来实现.具体实现方法如下: 1. 创建了一个非绑定列并设 ...
- C# DevExpress GridControl使用方法
一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 ().gridView.AddNe ...
- [转载]DevExpress GridControl 使用方法技巧 总结 收录整理
最近开始用DevExpress组件,发现很好的经验总结博客,在这里转载分享 原作者:https://www.cnblogs.com/wordgao/p/4517011.html 一.如何解决单击记录整 ...
- 实现DevExpress GridControl 只有鼠标双击后才进行修改数据
1. 实现DevExpress GridControl 只有鼠标双击后才进行修改数据:修改GridView.OptionsBehavior.EditorShowMode属性为Click 2. 实现De ...
- Devexpress GridControl z
http://minmin86121.blog.163.com/blog/static/4968115720144194923578/ 1 AllowNullInput=False; --Devexp ...
随机推荐
- js 判断微信浏览器
上周接到个需求,需求是这样的:用户扫一扫二维码会产生一个链接,该链接会向后端发送个请求,返回一个 apk 的下载地址,用户点击下载按钮可以下载此 apk.然后就发生了问题,经过测试,发现用微信扫一扫打 ...
- Microsoft Office Excel 不能访问文件 的解决办法
Microsoft Office Excel 不能访问文件"a.xls". 可能的原因有: ? 文件名称或路径不存在. ? 文件正被其他程序使用. ? 您正要保存的工作簿与当前 ...
- Etl之HiveSql调优(left join where的位置)
一.前言 公司实用Hadoop构建数据仓库,期间不可避免的实用HiveSql,在Etl过程中,速度成了避无可避的问题.本人有过几个数据表关联跑1个小时的经历,你可能觉得无所谓,可是多次Etl就要多个小 ...
- mac x Yosemide(10.10) 下安装 jdk 1.7 (jdk 1.8)的方法
当我们想在mac x yosemide 系统中更新jdk到1.7(1.8)的时候,会弹出下面的错误提示 解决这个问题的办法如下: 1.下载 好jdk 1.7(1.8) 地址:http://www.or ...
- 如何让DevExpress TreeList的每个结点高亮显示?
概述:如何让DevExpress TreeList的每个节点高亮显示? 如何让DXperience TreeList的每个节点高亮显示? 效果如下: private void treeList1_Cu ...
- notepad++批量头尾追加
每行首添加 在“查找目标”里输入上尖号“^”,上尖号代表每行的开头 每行尾追加
- 【转载】CSS 盒子模型
转处:http://www.cnblogs.com/sunyunh/archive/2012/09/01/2666841.html 说在Web世界里(特别是页面布局),Box Model无处不在.下面 ...
- CyanogenMod wiki reading tips | Android tips
To Enable the Developer and Performance settings on CyanogenMod 10.1 In the Settings app, choose the ...
- Java Web学习系列——Maven Web项目中集成使用Spring
参考Java Web学习系列——创建基于Maven的Web项目一文,创建一个名为LockMIS的Maven Web项目. 添加依赖Jar包 推荐在http://mvnrepository.com/.h ...
- php + Redis 写的类似于新浪微博的feed系统
最近接了一个feed系统的外包,类似于微博那种!客户端是ios和android,服务器用的php,数据库用的是redis.分享下服务器和数据库部分的功能!希望对大家有帮助. 关于redis的介绍,大家 ...

记录了一些GridControl的常用代码,分享给大家,如果有兴趣的可以到我的群
里进行提问,不仅包括GridControl,其他的控件我也研究了,运用到项目中
将来的你一定会感激现在拼命的自己