对Dev的GridControlGridView控件进⾏分组并展开操作
今天在模块编写中碰到了对表格的分组,特意在这⾥把它记录下来。
⼀、背景:Dev14.1.3,GridControl,.NET4.0+C#
⼆、过程
1、GridControl设计
⼀共添加4列:在下⾯主要是对第⼀和第⼆列进⾏操作,根据第⼀列进⾏分组,并对第⼆列进⾏纵向单元
格合并操作;
2、最简单的分组
仅仅根据“离线要素图层”列展⽰分组结果,分组标题默认使⽤Dev⾃带的设置,代码如下:
private void SetGrouping()
{gridview不显示
//处理数据源
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显⽰相应的统计。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。