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

一、背景: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 = ;
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 = ;//设置分组列 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 = ;
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 = ;//设置分组列
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显示相应的统计。

对Dev的GridControl/GridView控件进行分组并展开操作的更多相关文章

  1. GridView控件详解

    一.介绍 GridView控件一表格形式显示数据源中的数据.提供对列进行排序.分页以及编辑.删除单个记录的功能. 二.绑定数据源 第一种使用DataSourceID属性.可以直接把GridView控件 ...

  2. Winform 中DataGridView、dev Gridview控件添加行标题

    有很多种方法. 1.可以在DataGridView控件中的RowStateChanged事件改变行标题单元格的值(Row.HeaderCell.Value) /// <summary> / ...

  3. GridView控件隐藏列

    GridView隐藏列visible="false" 后你就无法取得这列的值了 下面是迄今为止最简洁的解决方法了. protected void GVList_RowDataBou ...

  4. 扩展GridView控件——为内容项添加拖放及分组功能

    引言 相信大家对GridView都不陌生,是非常有用的控件,用于平铺有序的显示多个内容项.打开任何WinRT应用或者是微软合作商的网站,都会在APP中发现GridView的使用.“Tiles”提供了一 ...

  5. .Net语言 APP开发平台——Smobiler学习日志:用Gridview控件设计较复杂的表单

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的”Smobil ...

  6. GridView控件中加自动排列序号

    GridView控件中加自动排列序号 为 Gridview 增加一个新的空白列,如下: <asp:BoundField  HeaderText="序号">    < ...

  7. GRIDVIEW 控件

    http://www.cnblogs.com/shanymen/archive/2009/05/22/1486654.html GridView控件是.net里的一个显示数据控件,该控件制作很人性化, ...

  8. asp.net GridView控件的列属性

    BoundField 默认的数据绑定类型,通常用于显示普通文本 CheckBoxField 显示布尔类型的数据.绑定数据为TRUE时,复选框数据绑定列为选中状态:绑定数据为FALSE时,则显示未选中状 ...

  9. ASP.NET中GridView控件删除数据的两种方法

      今天在用GridView控件时,发现了一个问题,就是使用GridView控件在删除数据时的问题.接下来我们通过模板列方式和CommandField方式删除某条数据讲解下两者之间的区别. 方式一:通 ...

随机推荐

  1. Python bytes类型及用法

    bytes 类型 Python 3 新增了 bytes 类型,用于代表字节串,是一个类型,不是C#中的列表. 字符串(str)由多个字符组成,以字符为单位进行操作: 字节串(bytes)由多个字节组成 ...

  2. 21、numpy数组模块

    一.numpy简介 numpy官方文档:https://docs.scipy.org/doc/numpy/reference/?v=20190307135750 numpy是Python的一种开源的数 ...

  3. js 类型系统的核心:元类型、原型链与内省机制

    js 类型系统的核心:元类型.原型链与内省机制 二.JS数据类型 下面就来看看JS中的数据类型,在js中定义了如下几种数据类型:大方向上分为 基本数据类型(简单数据类型) 和 引用数据类型(复杂数据类 ...

  4. Java逆变(Covariant)和协变(Contravariant)

    1. 定义 逆变和协变描述的经过类型变换后的类型之间的关系.假如A和B表示类型,f表示类型变换,A ≤B表示A是B的子类型,那么 如果A ≤B,f(A) ≤f(B),那么f是协变 如果A ≤B,f(B ...

  5. EasyExcel引入

    好久没更了,都在有道云上面记录,没时间搬过来. easyexcel是最近项目做优化涉及的一个改善点吧. 简介 导出是后台管理系统的常用功能,当数据量特别大的时候会内存溢出和卡顿页面,曾经自己封装过一个 ...

  6. golang 配置goproxy 几个可选的地址

    对于golang 语言的开发,对于国内来说有点被动,需要想各种方法,一般的解决方法如下: 使用代理工具(翻墙) 配置goproxy 目前发现的几个不错的goproxy 阿里云 配置如下:   expo ...

  7. Install Python3.6 on Amazon Linux/EC2 在Amazon Linux实例中安装使用Python3.6

    本文转载自 https://gist.github.com/niranjv/f80fc1f488afc49845e2ff3d5df7f83b 由于Amazon Linux中预装的Python版本为2. ...

  8. loj2058 「TJOI / HEOI2016」求和 NTT

    loj2058 「TJOI / HEOI2016」求和 NTT 链接 loj 思路 \[S(i,j)=\frac{1}{j!}\sum\limits_{k=0}^{j}(-1)^{k}C_{j}^{k ...

  9. 小胖守皇宫(VIJOS P1144 )题解

    题目描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步一哨,每 ...

  10. luogu P1724 东风谷早苗

    二次联通门 : luogu P1724 东风谷早苗 /* luogu P1724 东风谷早苗 模拟即可 手抖 Y-- 打成 Y++ WA了两发.. */ #include <cstring> ...