• 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显示相应的统计。但是这两种情况基本能满足我们对GridView中数据展示的一般要求。至于再高级的要求,还有待下一步深入学习(^_^)!

  • 相关阅读:
    Failed setting up proxy interface org.apache.hadoop.hbase.ipc.HRegionInterface
    关于操作权限
    什么时候才应该使用HBase?
    模块化服务规范——OSGI
    15个你可能不知道的开源云平台
    hadoop 异常记录 ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times
    Apache nutch1.5 & Apache solr3.6
    Apache cassandra
    谈谈SAAS模式
    卸载VisualStudio插件
  • 原文地址:https://www.cnblogs.com/qingtian-jlj/p/6063597.html
Copyright © 2020-2023  润新知