今天在模块编写中碰到了对表格的分组,特意在这里把它记录下来。

一、背景:Dev14.1.3,GridControl,.NET4.0+C#

二、过程

1、GridControl设计

一共添加4列:在下面主要是对第一和第二列进行操作,根据第一列进行分组,并对第二列进行纵向单元格合并操作;

2、最简单的分组

仅仅根据“离线要素图层”列展示分组结果,分组标题默认使用Dev自带的设置,代码如下:

private void SetGrouping()
{
//处理数据源
PageCtrl_Second();
MergeDataTables(DsParallel);
DataColumn dc = new DataColumn("select", typeof(int));
dc.DefaultValue = 1;
dtParallel1.Columns.Add(dc); //将DataTable列绑定到GridControl上
gc_ClnOffLine.FieldName = dtParallel1.Columns["FeaCls_OffLine"].ColumnName;
gc_ClnStationseries.FieldName = dtParallel1.Columns["Ss_ID"].ColumnName;
gc_ClnSelect.FieldName = dtParallel1.Columns["select"].ColumnName;
gc_ClnPipelineName.FieldName = dtParallel1.Columns["PipeLineName"].ColumnName;
gridView1.OptionsView.AllowCellMerge = true;
gc_ClnOffLine.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
gc_ClnSelect.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False;
gc_ClnStationseries.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False; //分组
gc_ClnOffLine.GroupIndex = 0;//设置分组列 gridView1.OptionsBehavior.AutoExpandAllGroups = true;//展开所有分组
gridControl1.DataSource = dtParallel1;
}

  

其中真正起到作用的就是设置分组列的那一行,也就是设置某一列的GroupIndex(该值默认均为-1,即不分组);这是最低的分组显示要求,结果如下图:将“离线要素图层”那一列作为分组列,然后系统默认的显示方式就是[列名+值]

当然也可以通过GridControl的事件重新制定分组的名称,需要使用CustomDrawGroupRow事件,实现代码如下:

private void gridView1_CustomDrawGroupRow(object sender, DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs e)
{
GridGroupRowInfo pGridGroupRowInfo = e.Info as GridGroupRowInfo;
string strTransfer = string.Format("OffLineFeature:{0}",pGridGroupRowInfo.GroupValueText);
pGridGroupRowInfo.GroupText = strTransfer;
//注:GroupValueText的值代表的是这个分组单元格内的值;GroupText的值是最后展示在分组行中的内容
}

效果如图所示:,分组行展示的内容已经修改为自定义的了。

3、分组名称+字段统计

有时候,我们除了需要展示分组的名称之外,还想对每一个分组中的数据行数进行统计,此时就需要添加一个GridGroupSummaryItem对象到gridview中,并设置他的DisplayFormat的值和SummaryType的值,具体的值的内容可以在dev代码提示中查看,具体实现如下:

private void SetGrouping()
{
//处理数据源
PageCtrl_Second();
MergeDataTables(DsParallel);
DataColumn dc = new DataColumn("select", typeof(int));
dc.DefaultValue = 1;
dtParallel1.Columns.Add(dc); //将DataTable列绑定到GridControl上
gc_ClnOffLine.FieldName = dtParallel1.Columns["FeaCls_OffLine"].ColumnName;
gc_ClnStationseries.FieldName = dtParallel1.Columns["Ss_ID"].ColumnName;
gc_ClnSelect.FieldName = dtParallel1.Columns["select"].ColumnName;
gc_ClnPipelineName.FieldName = dtParallel1.Columns["PipeLineName"].ColumnName;
gridView1.OptionsView.AllowCellMerge = true;
gc_ClnOffLine.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
gc_ClnSelect.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False;
gc_ClnStationseries.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False; //分组
gc_ClnOffLine.GroupIndex = 0;//设置分组列
DevExpress.XtraGrid.GridGroupSummaryItem item = new DevExpress.XtraGrid.GridGroupSummaryItem();
item.DisplayFormat = "并行站列数量:{0}";//默认"{0}: [#image]{1} {2}"
item.SummaryType = DevExpress.Data.SummaryItemType.Count;
gridView1.GroupSummary.Add(item); gridView1.OptionsBehavior.AutoExpandAllGroups = true;//展开所有分组
gridControl1.DataSource = dtParallel1;
}

  

其实现效果如下图所示,在最初的[列名+值]后面加上了我们添加进来的GridGroupSummaryItem所指定的值;

扩展:这里我只是添加了一个GridGroupSummaryItem,但是Dev还可以连续添加多个GridGroupSummaryItem到GridView中,多个item之间会用【,】分隔开。

4、总结

  这里的分组我只列出来这两种:①直接展示【列名+值】;②增加一个GridGroupSummaryItem显示相应的统计。但是这两种情况基本能满足我们对GridView中数据展示的一般要求。至于再高级的要求,还有待下一步深入学习(^_^)!

GridControl/GridView的分组操作的更多相关文章

  1. DevExpress.GridControl.gridView的一些注意

    1.DevExpress控件组中的GridControl控件不能使横向滚动条有效.现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容. 解决: gridView1.Op ...

  2. Dev GridControl GridView 属性大全[中文解释]

    Options 选项 OptionsBehavior 视图的行为选项 AllowAddRows 允许添加新数据行 AllowDeleteRows 允许删除数据行 AllowIncrementalSea ...

  3. Linq分组操作之GroupBy,GroupJoin扩展方法源码分析

    Linq分组操作之GroupBy,GroupJoin扩展方法源码分析 一. GroupBy 解释: 根据指定的键选择器函数对序列中的元素进行分组,并且从每个组及其键中创建结果值. 查询表达式: var ...

  4. MYSQL常用函数以及分组操作

    SELECT CONVERT(",SIGNED); SELECT CAST(" AS SIGNED); SELECT ; SELECT LENGTH("姜浩真帅!&quo ...

  5. HAVING 搜索条件在进行分组操作之后应用

    HAVING 搜索条件在进行分组操作之后应用: 如:查询帖子访问量大于15的用户id: select t.user_id,u.name,sum(count_view) from t_topic t l ...

  6. Java对MongoDB进行分组操作并统计各个分组的数量

    最近在检索MongoDB的数据时需要用到分组操作,由于没有现成的说明文档可参考,只能是在代码中不断调试.摸索前进:目前已现实了Java对MongoDB的分组操作,并统计各个分组的数量.现通过示例详细解 ...

  7. 对Dev的GridControl/GridView控件进行分组并展开操作

    今天在模块编写中碰到了对表格的分组,特意在这里把它记录下来. 一.背景:Dev14.1.3,GridControl,.NET4.0+C# 二.过程 1.GridControl设计 一共添加4列:在下面 ...

  8. GridView编辑删除操作

    第一种:使用DataSource数据源中自带的编辑删除方法,这样的不经常使用,在这里就不加说明了. 另外一种:使用GridView的三种事件:GridView1_RowEditing(编辑).Grid ...

  9. MongoDB 的分组操作 In C#

    C#对mongodb的分组查询操作,主要通过脚本或Aggregate方法来实现,以下通过一些实例作解析: 参考资料:http://www.tuicool.com/articles/2iqUZj   h ...

随机推荐

  1. Operating System 概述和学习图

    Operating System 概述和学习图 大神绕道,鄙人初入 OS . 一.想知OS,先知计算机系统概述 #图解 #基本指令和中断周期 #直接内存存取(Direct Memory Access, ...

  2. JS代码平面化

    重构JS代码 - 让JS代码平面化   js中的嵌套函数用的很多,很牛叉,那为何要平面化? 易懂(自己及他人) 易修改(自己及他人) 平时Ajax调用写法(基于jQuery) $.post('url' ...

  3. PYTHON ASP FRAMEWORK

    Python 融于ASP框架   一.ASP的平反 想到ASP 很多人会说 “asp语言很蛋疼,不能面向对象,功能单一,很多东西实现不了” 等等诸如此类. 以上说法都是错误的,其一ASp不是一种语言是 ...

  4. DES加密解密帮助类

    public class DESCrypto { /// <summary> /// 初始化des实例秘钥及向量 /// </summary> /// <param na ...

  5. IIS Express添加MIME映射

    最近在使用fontawesome字体时,在浏览器控制台看到 fontawesome-webfont.woff2?v=4.3.0 无法访问的错误,检查了一下文件确实存在并且路径也对,这就奇怪了! 在控制 ...

  6. windbg Symbol file path

    SOS是一个调试器扩展,用于调试.NET应用程序.它提供了一组非常丰富的命令,这些命令使开发人员可以对CLR进行深入分析,并且有助于找出应用程序中各种复杂错误的原因.   由于SOS能够提供CLR内部 ...

  7. geek 的博客

    hexo 适合前端 geek 的博客   原文出自:http://www.qiangji.tk/hexo%E9%80%82%E5%90%88%E5%89%8D%E7%AB%AFgeek%E7%9A%8 ...

  8. IOS学习之路十(仿人人滑动菜单Slide-out Sidebar Menu)

    最近滑动菜单比较流行,像facebook和人人等都在使用滑动菜单,今天做了一个小demo大体效果如下: 这次用了一个开源的项目ECSlidingViewController这个也是一个挺著名的托管在G ...

  9. CSS border-radius 圆角

    本文转自:http://www.kwstu.com/Admin/ViewArticle/201409151549476225 border-radius属性主要用于设置div圆角效果. 使用方法 bo ...

  10. (Java 多线程系列)java volatile详解

    在前面的文章里面介绍了synchronized关键字的用法,这篇主要介绍volatile关键字的用法. Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其它 ...