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

一、背景: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. java 集合类 列表

    Dissecting the Program Line 2-4 imports the collection framework classes and interfaces reside in th ...

  2. docker 空间清理

    https://blog.csdn.net/qq_28001193/article/details/79555177 清理之后,重要的是找到原因,如上连接所示,其中一个占空间比较大的是日志文件,除了考 ...

  3. 树莓派项目(三) 数字识别树莓派3+python3.5+opencv3.3+tensorflow1.7+keras

    https://blog.csdn.net/weixin_40707450/article/details/80290705

  4. MongoDB 聚合查询报错

    1.Distinct聚合查询报错 db.users.distinct("uname") db.runCommand({"distinct":"user ...

  5. [RN] React Native FlatList跳转到顶部/底部

    React Native FlatList跳转到顶部/底部 核心代码如下: <ScrollView showsVerticalScrollIndicator={false} contentCon ...

  6. [洛谷P3092]【[USACO13NOV]没有找零No Change】

    状压\(DP\) + 二分 考虑构成:\(k<=16\)所以根据\(k\)构造状压\(dp\),将所有硬币的使用情况进行状态压缩 考虑状态:数组\(dp[i]\)表示用\(i\)状态下的硬币可以 ...

  7. [sdoi 2017]树点涂色

    传送门 Description Bob 有一棵\(n\)个点的有根树,其中\(1\)号点是根节点.Bob 在每个节点上涂了颜色,并且每个点上的颜色不同. 定义一条路径的权值是,这条路径上的点(包括起点 ...

  8. planning algorithms chapter 2

    planning algorithms chapter 2 :Discrete Planning 离散可行规划导论 问题定义 在离散规划中,状态是"可数"的,有限的. 离散可行规划 ...

  9. centos7安装hadoop2.7.7

    下载hadoop-2.7.7 网址如下 https://www-eu.apache.org/dist/hadoop/core/ 移动到/opt 路径下 在/opt下新建一个文件夹,名为app mkdi ...

  10. [技术博客]使用CDN加快网站访问速度

    [技术博客]使用CDN加快网站访问速度 2s : most users are willing to wait 10s : the limit for keeping the user's atten ...