zoukankan      html  css  js  c++  java
  • 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中数据展示的一般要求。至于再高级的要求,还有待下一步深入学习(^_^)!

  • 相关阅读:
    spark streaming 概述
    spark sql 的性能调优
    LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal (用中序和后序树遍历来建立二叉树)
    LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal (用先序和中序树遍历来建立二叉树)
    LeetCode 90. Subsets II (子集合之二)
    LeetCode 88. Merge Sorted Array(合并有序数组)
    LeetCode 81. Search in Rotated Sorted Array II(在旋转有序序列中搜索之二)
    LeetCode 80. Remove Duplicates from Sorted Array II (从有序序列里移除重复项之二)
    LeetCode 79. Word Search(单词搜索)
    LeetCode 78. Subsets(子集合)
  • 原文地址:https://www.cnblogs.com/qingtian-jlj/p/6063597.html
Copyright © 2011-2022 走看看