GridControl 列合并(自定义分组条件)

Posted Jia_ShengJie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GridControl 列合并(自定义分组条件)相关的知识,希望对你有一定的参考价值。

说明:

    当前方式不提倡,最好还是使用 (1)主从表、或(2)分组。

一、数据源

DataTable dta = new DataTable();
dta.Columns.Add("A");
dta.Columns.Add("B");
dta.Columns.Add("C");
dta.Columns.Add("D");
for (int m = 1; m <=20; m++)
  dta.Rows.Add($"Am/5", $"B", $"Cm/2",$"Dm");
grid.DataSource = dta;

二、默认合并

gv.OptionsView.AllowCellMerge = true;

三、根据条件分组合并(根据列A分组合并)

调用示例:

FuncGrid.SetMergeCell(gv, "A", new[]  "B", "C" );

四、自定类

        #region 按条件合并
        
        private static string _groupName;
        private static string[] _mergeCols;
        /// <summary>
        /// GridView合并(自定义分组)
        /// </summary>
        /// <param name="gv"></param>
        /// <param name="groupName">分组列(需要合并的列)</param>
        /// <param name="mergeCols">需要合并的列</param>
        public static void SetMergeCell(GridView gv, string groupName, string[] mergeCols)
        
            gv.OptionsView.AllowCellMerge = true;
            _groupName = groupName;
            _mergeCols = mergeCols;
            gv.CellMerge += Gv_CellMerge;
        

        private static void Gv_CellMerge(object sender, CellMergeEventArgs e)
        
            try
            
                GridView myGv = sender as GridView;
                if (myGv == null) return;
                DataRow dra1 = myGv.GetDataRow(e.RowHandle2 - 1);
                DataRow dra2 = myGv.GetDataRow(e.RowHandle2);
                if (dra1 == null || dra2 == null) return;

                foreach (string str in _mergeCols)
                
                    if (e.Column.FieldName == str)
                    
                        bool isOk1 = dra1[_groupName].ToString() == dra2[_groupName].ToString();
                        bool isOk2 = dra1[str].ToString() == dra2[str].ToString();
                        e.Merge = isOk1 && isOk2;
                        e.Handled = true;
                    
                
            
            catch
            
            
        

        #endregion

 

以上是关于GridControl 列合并(自定义分组条件)的主要内容,如果未能解决你的问题,请参考以下文章

gridcontrol自定义分组表头显示

对Dev的GridControl/GridView控件进行分组并展开操作

DevExpress 之 GridControl 自定义列

c#devexpress,gridcontrol如何添加自定义列

DevExpress中GridControl自定义汇总列值(有选择性的汇总)

gridcontrol 根据某一列数据来控制其他列合并