dev gridcontrol在分组行(grouprow)中加入checkbox
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dev gridcontrol在分组行(grouprow)中加入checkbox相关的知识,希望对你有一定的参考价值。
dev gridcontrol在分组行(grouprow)中加入checkbox,想实现不同组内的所有行的全选
参考技术A 选中GridControl,打开它的Designer的Columns界面。选择需要进行分组的Column,设置它的GroupIndex属性。(默认是-1,不进行分组。设置为0,就是第一层分组。如果有多列要进行分组,第2列设置为1,就是第二层分组了。以此类推)设置完成后,就是如下界面了(我是按照每间房屋进行分组的,分组字段是房屋ID)。
下面就是设置分组组名,默认是显示该字段的列名。如果需要修改成自定义名称,可以在GridControl的CustomDrawGroupRow事件中进行处理(它是重新绘制分组信息的)。
private void gvwDetails_CustomDrawGroupRow(object sender, DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs e)
GridGroupRowInfo GridGroupRowInfo = e.Info as GridGroupRowInfo;
GridGroupRowInfo.GroupText = "Test";
}
如果是需要进行更复杂的显示(例如我是需要显示楼盘,楼栋,房号字段的信息)。
可以使用GetDataRowHandleByGroupRowHandle方法根据组的RowHandle得到该组第一条记录在数据集中的RowHandle,然后获取该组下面记录的楼盘,楼栋,房号的字段信息。
private void gvwDetails_CustomDrawGroupRow(object sender, DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs e)
GridGroupRowInfo GridGroupRowInfo = e.Info as GridGroupRowInfo;
GridView gridview = sender as GridView;
int index = gridview.GetDataRowHandleByGroupRowHandle(e.RowHandle);
GridGroupRowInfo.GroupText = gridview.GetRowCellValue(index, "ConstructionName").ToString()
+ gvwDetails.GetRowCellValue(index, "BuildingName").ToString()
+ gvwDetails.GetRowCellValue(index, "HouseName").ToString();
最后隐藏楼盘,楼栋,房号字段的显示。追问
请理解清楚,上图是想要实现的内容
对Dev的GridControl/GridView控件进行分组并展开操作
今天在模块编写中碰到了对表格的分组,特意在这里把它记录下来。
一、背景: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显示相应的统计。
以上是关于dev gridcontrol在分组行(grouprow)中加入checkbox的主要内容,如果未能解决你的问题,请参考以下文章