写在前面,Dev控件已经很久了,功能也很强大,截止到现在我编写文档出来的Dev的版本已经到了14.1了,看了Demo真的很强大,效果也很好,结合自己这一个月开发,分享一下自己研究过后的经验,不让大家走更多的弯路

  • DevExpress安装顺序
  • GridControl基本样式设置
  • GridControl常用事件和描述
  • GridControl右键菜单
  • GridControl全选和反选
  • GridControl添加小计功能
  • GridControl固定表头

    1.安装从未如此简单

    Dev的安装文件已经放大百度云中方便大家下载:DevExpress 12.2.7,下载后按照图片数字顺序依次安装,这就是Dev 12.2.7,你值得拥有。

    1. if (bandedGridView1.GetFocusedDataRow() == null) return;
    2. //运单编号
    3. var columnValue= bandedGridView1.GetFocusedRowCellValue("绑定列字段名称").ToString();

    注意事项:使用VS2012和2010搭配DevExpress 12.2.7这个版本一起开发是最好的,工具箱暂时无法导入VS2013

    2.基本样式设置,你会吗?

    面对第一次使用GridControl,搞不懂GridControl下面为什么有一堆的GridView呢?后来想想,原来GridControl是一个大容器,下面有很多视图,那么就是操作视图,下面是我的一些常用样式设置。

  1. bandedGridView1.IndicatorWidth = 40; //自增列宽度
  2. bandedGridView1.OptionsView.ColumnAutoWidth = false; //自动调整列宽,使所有列的宽度和视图的宽度匹配
  3. bandedGridView1.OptionsCustomization.AllowSort = false;//禁止用户对数据进行排序操作
  4. bandedGridView1.OptionsCustomization.AllowColumnResizing = false; //禁止各列头改变列宽
  5. bandedGridView1.VertScrollVisibility = ScrollVisibility.Auto; //显示垂直滚动条
  6. bandedGridView1.HorzScrollVisibility = ScrollVisibility.Auto; //显示水平滚动条
  7. bandedGridView1.OptionsMenu.EnableColumnMenu = false; //禁止列头上的菜单
  8. bandedGridView1.OptionsMenu.EnableFooterMenu = false; //禁止页脚上的菜单
  9. bandedGridView1.OptionsMenu.EnableGroupPanelMenu = false; //禁止分组面板上的菜单
  10. bandedGridView1.OptionsNavigation.UseTabKey = false; //不使用TAB/SHIFT+TAB移动焦点
  11. bandedGridView1.OptionsBehavior.Editable = false;//不允许编辑
  12. bandedGridView1.OptionsBehavior.ReadOnly = true;//只读

   3.这些事件你会常用

CustomDrawRowIndicator:DGV显示自增行号

  1. e.Appearance.TextOptions.HAlignment = HorzAlignment.Far;
  2.             if (e.Info.IsRowIndicator)
  3.             {
  4.                 if (e.RowHandle >= 0)
  5.                 {
  6.                     e.Info.DisplayText = (e.RowHandle + 1).ToString(CultureInfo.InvariantCulture);
  7.                 }
  8.                 else if (e.RowHandle < 0 && e.RowHandle > -1000)
  9.                 {
  10.                     e.Info.Appearance.BackColor = Color.AntiqueWhite;
  11.                     e.Info.DisplayText = "G" + e.RowHandle;
  12.                 }
  13.             }

RowCellStyle:GridView隔行变色

  1. bandedGridView1.Appearance.OddRow.BackColor = Color.White; // 设置奇数行颜色 // 默认也是白色 可以省略
  2. bandedGridView1.OptionsView.EnableAppearanceOddRow = true; // 使能 // 和和上面绑定 同时使用有效
  3. bandedGridView1.Appearance.EvenRow.BackColor = Color.FromArgb(, , ); // 设置偶数行颜色
  4. bandedGridView1.OptionsView.EnableAppearanceEvenRow = true; // 使能 // 和和上面绑定 同时使用有效
  5. if (e.RowHandle == bandedGridView1.FocusedRowHandle)
  6. {
  7. e.Appearance.Font = new Font("宋体", , FontStyle.Bold);
  8. }

    FocusedRowChanged:选中行改变绑定行数据到对应控件中

  1. if (bandedGridView1.GetFocusedDataRow() == null) return;//判断当前选中行是否为null
  2. //返回值
  3. var columnValue= bandedGridView1.GetFocusedRowCellValue("绑定列字段名称").ToString();

     4.添加右击菜单一个很常用的功能

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

这样一个右键菜单就已经绑定成功

5.GridControl全选和反选

这是一个比较难的问题,这里我结合网上寻找的资料总结了一个实体类贴上源代码

  1. //-------------------------------------------------------------------------------------
  2. // All Rights Reserved , Copyright (C) 2014 , ZTO , Ltd .
  3. //-------------------------------------------------------------------------------------
  4.  
  5. using System.Drawing;
  6. using System.Windows.Forms;
  7. using DevExpress.XtraEditors.Repository;
  8.  
  9. namespace ZTO.WayBill.Utilities
  10. {
  11. /// <summary>
  12. /// Dev GridControl 创建全选复选框
  13. ///
  14. /// 修改纪录
  15. ///
  16. /// 2014-5-30 版本:1.0 YangHengLian 创建主键,注意命名空间的排序。
  17. ///
  18. /// 版本:1.0
  19. ///
  20. /// <author>
  21. /// <name>YangHengLian</name>
  22. /// <date>2014-5-30</date>
  23. /// </author>
  24. /// </summary>
  25. public class DevControlHelper
  26. {
  27. /// <summary>
  28. /// 创建复选框
  29. /// </summary>
  30. /// <param name="e"></param>
  31. /// <param name="chk"></param>
  32. public static void DrawCheckBox(DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e, bool chk)
  33. {
  34. RepositoryItemCheckEdit repositoryCheck = e.Column.ColumnEdit as RepositoryItemCheckEdit;
  35. if (repositoryCheck != null)
  36. {
  37. Graphics g = e.Graphics;
  38. Rectangle r = e.Bounds;
  39. DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo info;
  40. DevExpress.XtraEditors.Drawing.CheckEditPainter painter;
  41. DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs args;
  42. info = repositoryCheck.CreateViewInfo() as DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo;
  43. painter = repositoryCheck.CreatePainter() as DevExpress.XtraEditors.Drawing.CheckEditPainter;
  44. info.EditValue = chk;
  45. info.Bounds = r;
  46. info.CalcViewInfo(g);
  47. args = new DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs(info, new DevExpress.Utils.Drawing.GraphicsCache(g), r);
  48. painter.Draw(args);
  49. args.Cache.Dispose();
  50. }
  51. }
  52. /// <summary>
  53. /// 全选,反选
  54. /// </summary>
  55. /// <param name="gridView"></param>
  56. /// <param name="fieldName"></param>
  57. /// <param name="currentStatus"></param>
  58. /// <returns></returns>
  59. public static bool ClickGridCheckBox(DevExpress.XtraGrid.Views.Grid.GridView gridView, string fieldName, bool currentStatus)
  60. {
  61. bool result = false;
  62. if (gridView != null)
  63. {
  64. gridView.ClearSorting();//禁止排序
  65. gridView.PostEditor();
  66. DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo info;
  67. Point pt = gridView.GridControl.PointToClient(Control.MousePosition);
  68. info = gridView.CalcHitInfo(pt);
  69. if (info.InColumn && info.Column != null && info.Column.FieldName == fieldName)
  70. {
  71. for (int i = ; i < gridView.RowCount; i++)
  72. {
  73. gridView.SetRowCellValue(i, fieldName, !currentStatus);
  74. }
  75. return true;
  76. }
  77. }
  78. return result;
  79. }
  80. }
  81. }

下面是使用步骤

窗体加载事件添加一些代码

  1. private bool _mCheckStatus; //GridControl全选,作为全局变量,默认false
  2. private void FrmInputBill_Load(object sender, EventArgs e)
  3. {
  4. bandedGridView1.OptionsBehavior.Editable = false;
  5. bandedGridView1.OptionsBehavior.ReadOnly = true;
  6. var col = new BandedGridColumn { FieldName = "Check", Visible = true, VisibleIndex = , ColumnEdit = new RepositoryItemCheckEdit() };
  7. col.OptionsColumn.AllowEdit = true; //CheckBox可以编辑改变
  8. gridBand1.Columns.Insert(, col);
  9. bandedGridView1.Click += bandedGridView1_Click;
  10. bandedGridView1.CustomDrawColumnHeader += bandedGridView1_CustomDrawColumnHeader;
  11. bandedGridView1.DataSourceChanged += bandedGridView1_DataSourceChanged;
  12.        //这里绑定数据源
  13. }
  14. #region GridControl支持全选事件
  15.  
  16. private void bandedGridView1_Click(object sender, EventArgs e)
  17. {
  18. if (DevControlHelper.ClickGridCheckBox(this.bandedGridView1, "Check", _mCheckStatus))
  19. {
  20. _mCheckStatus = !_mCheckStatus;
  21. }
  22. }
  23.  
  24. private void bandedGridView1_CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e)
  25. {
  26. if (e.Column != null && e.Column.FieldName == "Check")
  27. {
  28. e.Info.InnerElements.Clear();
  29. e.Painter.DrawObject(e.Info);
  30. DevControlHelper.DrawCheckBox(e, _mCheckStatus);
  31. e.Handled = true;
  32. }
  33. }
  34.  
  35. private void bandedGridView1_DataSourceChanged(object sender, EventArgs e)
  36. {
  37. GridColumn column = this.bandedGridView1.Columns.ColumnByFieldName("Check");
  38. if (column != null)
  39. {
  40. column.Width = ;
  41. column.OptionsColumn.ShowCaption = false;
  42. column.ColumnEdit = new RepositoryItemCheckEdit();
  43. }
  44. }
  45.  
  46. #endregion

全选和反选

  1. 6.添加小计功能
    第一步

    第二步
    加载完数据之后绑定
  2.  
  3. bandedGridView1.Columns["绑定字段列名"].Summary.Add(DevExpress.Data.SummaryItemType.Count, "BILL_CODE", "总计:{0}条"); //添加小计功能,在指定的列上添加一个统计对象
  1. 删除动作修改对应的小计信息,代码如下:
  1. bandedGridView1.Columns["绑定字段列名"].Summary[0].DisplayFormat = string.Format("小计{0}条", bandedGridView1.RowCount);
  1. 7.固定表头
  2.  
  3. 记录了一些GridControl的常用代码,分享给大家,如果有兴趣的可以到我的群里进行提问,不仅包括GridControl,其他的控件我也研究了,运用到项目中
  4.  
  5. 将来的你一定会感激现在拼命的自己

DevExpress GridControl功能总结的更多相关文章

  1. DevExpress GridControl使用方法

    一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 (1).gridView.AddN ...

  2. DevExpress GridControl 使用方法技巧 总结 收录整理

    一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 ().gridView.AddNe ...

  3. DevExpress GridControl使用(转)

    DevExpress GridControl使用 (一)原汁原味的表格展示 Dev控件中的表格控件GridControl控件非常强大.不过,一些细枝末节的地方有时候用起来不好找挺讨厌的.使用过程中,多 ...

  4. DevExpress GridControl+UserControl实现分页

    志向不过是记忆的奴隶,生气勃勃地降生,但却很难成长. —— 莎士比亚 时隔一年,我写随笔真的很随意,想起了就来博客园写写,想不起来就任由懒惰支配着我.不过我到觉得这不是什么坏事,你不用为了完成某事而让 ...

  5. DevExpress GridControl 显示外部图片

    如果数据源中只包含图片的链接,如何在DevExpress GridControl的一列中显示外部图片? 要实现该功能,可通过非绑定列的方式来实现.具体实现方法如下: 1.    创建了一个非绑定列并设 ...

  6. C# DevExpress GridControl使用方法

    一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 ().gridView.AddNe ...

  7. [转载]DevExpress GridControl 使用方法技巧 总结 收录整理

    最近开始用DevExpress组件,发现很好的经验总结博客,在这里转载分享 原作者:https://www.cnblogs.com/wordgao/p/4517011.html 一.如何解决单击记录整 ...

  8. 实现DevExpress GridControl 只有鼠标双击后才进行修改数据

    1. 实现DevExpress GridControl 只有鼠标双击后才进行修改数据:修改GridView.OptionsBehavior.EditorShowMode属性为Click 2. 实现De ...

  9. Devexpress GridControl z

    http://minmin86121.blog.163.com/blog/static/4968115720144194923578/ 1 AllowNullInput=False; --Devexp ...

随机推荐

  1. java对过反射调用方法

      public class InvokeTester { public InvokeTester() { } String str; public InvokeTester(String str) ...

  2. SOA架构改造简单记录

    前端支持PC.Mobile.H5三个平台 nginx做负载均衡,主备机,keepalived,检测脚本,master和slave切换时完成相关工作: web做集群,web仅仅是web,与后端服务模块采 ...

  3. 8个经典炫酷的HTML5 Canvas动画欣赏

    HTML5非常强大,尤其是Canvas技术的应用,让HTML5几乎可以完成所有Flash能完成的效果.本文精选了8个经典炫酷的HTML5 Canvas动画欣赏,每一个都提供全部的源代码,希望对你有所帮 ...

  4. Oracle数据库管理员面试题

    Oracle数据库管理员面试题 1.模拟使用oracle的flashback找回过去某个时间点的数据,实现误操作的恢复. http://www.txw100.com/soft/2013/08/547. ...

  5. mac 自动配置java版本

    首先输入命令:vi .bash_profile ,添加如下内容: # Mac默认 JDK (Mac默认自带了一个jdk6版本) export JAVA_6_HOME=`/usr/libexec/jav ...

  6. Android 模拟器 获得 root权限

    启动一个模拟器,开始-运行-输入cmd,打开dos,依次输入 adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system ...

  7. C/C++/Qt 统计运行时间

    http://www.cnblogs.com/Romi/archive/2012/04/19/2457175.html 程序中经常需要统计时间,需要统计某项运算的运行时间时,需要计算时间差. 1. C ...

  8. maven eclipse jetty debug

    可以通过查看最近版本: http://mvnrepository.com/artifact/org.eclipse.jetty/jetty-server http://search.maven.org ...

  9. oracle 查询月份差

    select to_char(add_months(trunc(sysdate),-1),'yyyymm') from dual;

  10. SNF开发平台WinForm之十-Excel导入-SNF快速开发平台3.3-Spring.Net.Framework

    7.1运行效果: 2.Excel导入开发实现 2.1. 创建窗体,修改命名空间 新增的窗体命名“FrmImport表名”,这个导入窗口比较其它窗口会特殊一些,需要继承BaseFormImport父级窗 ...