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 列合并(自定义分组条件)的主要内容,如果未能解决你的问题,请参考以下文章
对Dev的GridControl/GridView控件进行分组并展开操作
c#devexpress,gridcontrol如何添加自定义列