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

一、背景: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. canvas小案列-绚丽多彩的倒计时

    本次随笔中,我将实现一个绚丽的倒计时效果,这个效果主要是结合canvas和js实现的,具体代码如下 index.html文件 <!DOCTYPE html> <html> &l ...

  2. QTAction Editor的简单使用(简洁明了)

    1. 打开UI界面,选择如下图的模式 2. 添加资源名称并选择相应的资源,点击OK 3. 相应的资源就建立好了 4. 添加好的资源可以直接拖到MainWindow中

  3. 磁盘提示“X:拒绝访问”问题解决

    cacls "D:\*.*" /T /E /G Administrators:F cacls "D:\*.*" /T /E /G Users:F cacls & ...

  4. 解决关于VC++ 6.0打开文件时,程序停止的问题

    不少boys和girls安装VC++ 6.0英文版后,开始学习C++语言,但是使用软件的过程中,点击“打开”时,就会出现程序进程错误,崩溃的事儿,很是郁闷.最后直接一个对话框如下: 并且vc6.0直接 ...

  5. map转list | 对象转数组 | 美菜数据格式转换

    function formatData(tempObj){ let bigArr = []; for(let p in tempObj){ let tempArrForeach1 = [] for(l ...

  6. jquery.lazyload.js-v1.9.1延时加载插件,已兼容ie6和各大浏览器

    来源:http://www.jq22.com/jquery-info390 使用前要求: img的设置: 1.class要配上“lazy”: 2.用data-original代替src: 3.如果想要 ...

  7. Dart 库预览

    容导航 dart:core - numbers, collections, strings, and more dart:async - asynchronous programming dart:m ...

  8. round.606.div2

    A. Happy Birthday, Polycarp! 这个题意我确实没有看懂. 沃日,我懂了,我感觉我似乎都能切掉这题. B. Make Them Odd 这个我也能看懂.

  9. Jupyter的快捷键使用

    命令模式 (按键 Esc 开启) Enter : 转入编辑模式 Shift-Enter : 运行本单元,选中下个单元 Ctrl-Enter : 运行本单元 Alt-Enter : 运行本单元,在其下插 ...

  10. benchmarkdotnet docker 运行

    使用docker 运行基准测试是一个不错的选择,可以减少我们环境搭建的时间,同时也可以加速ci/cd 环境准备 docker-compose 文件 version: "3" ser ...