对Dev的GridControl/GridView控件进行分组并展开操作
今天在模塊編寫中碰到了對表格的分組,特意在這里把它記錄下來。
一、背景:Dev14.1.3,GridControl,.NET4.0+C#
二、過程
1、GridControl設(shè)計
一共添加4列:在下面主要是對第一和第二列進行操作,根據(jù)第一列進行分組,并對第二列進行縱向單元格合并操作;
2、最簡單的分組
僅僅根據(jù)“離線要素圖層”列展示分組結(jié)果,分組標題默認使用Dev自帶的設(shè)置,代碼如下:
private void SetGrouping(){//處理數(shù)據(jù)源 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;//設(shè)置分組列 gridView1.OptionsBehavior.AutoExpandAllGroups = true;//展開所有分組gridControl1.DataSource = dtParallel1;}其中真正起到作用的就是設(shè)置分組列的那一行,也就是設(shè)置某一列的GroupIndex(該值默認均為-1,即不分組);這是最低的分組顯示要求,結(jié)果如下圖:將“離線要素圖層”那一列作為分組列,然后系統(tǒng)默認的顯示方式就是[列名+值]
當然也可以通過GridControl的事件重新制定分組的名稱,需要使用CustomDrawGroupRow事件,實現(xiàn)代碼如下:
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的值代表的是這個分組單元格內(nèi)的值;GroupText的值是最后展示在分組行中的內(nèi)容}效果如圖所示:,分組行展示的內(nèi)容已經(jīng)修改為自定義的了。
3、分組名稱+字段統(tǒng)計
有時候,我們除了需要展示分組的名稱之外,還想對每一個分組中的數(shù)據(jù)行數(shù)進行統(tǒng)計,此時就需要添加一個GridGroupSummaryItem對象到gridview中,并設(shè)置他的DisplayFormat的值和SummaryType的值,具體的值的內(nèi)容可以在dev代碼提示中查看,具體實現(xiàn)如下:
private void SetGrouping(){//處理數(shù)據(jù)源 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;//設(shè)置分組列DevExpress.XtraGrid.GridGroupSummaryItem item = new DevExpress.XtraGrid.GridGroupSummaryItem();item.DisplayFormat = "并行站列數(shù)量:{0}";//默認"{0}: [#image]{1} {2}"item.SummaryType = DevExpress.Data.SummaryItemType.Count;gridView1.GroupSummary.Add(item);gridView1.OptionsBehavior.AutoExpandAllGroups = true;//展開所有分組gridControl1.DataSource = dtParallel1;}其實現(xiàn)效果如下圖所示,在最初的[列名+值]后面加上了我們添加進來的GridGroupSummaryItem所指定的值;
擴展:這里我只是添加了一個GridGroupSummaryItem,但是Dev還可以連續(xù)添加多個GridGroupSummaryItem到GridView中,多個item之間會用【,】分隔開。
4、總結(jié)
這里的分組我只列出來這兩種:①直接展示【列名+值】;②增加一個GridGroupSummaryItem顯示相應(yīng)的統(tǒng)計。
轉(zhuǎn)載于:https://www.cnblogs.com/wolfocme110/p/9513675.html
總結(jié)
以上是生活随笔為你收集整理的对Dev的GridControl/GridView控件进行分组并展开操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Perl系列文章
- 下一篇: BZOJ 2744: [HEOI2012