dev 实现表格相同列合并
dev 实现表格相同列合并
实现效果
一、自动合并
实现步骤
1、在“GridControl”中右键打开“Run Designer”
2、在“Options”中下拉找到“OptionsView”,点开找到“AllowCellMerge”属性,设置为“True”
说明:设置GridControl控件的AllowCellMerge的属性为true之后,会把表格中所有相同的列都自动合并在一起。但是,如果想自定义合并某些列,那么单纯的设置AllowCellMerge 为true是无法实现的。
二、自定义合并列
说明:要实现这种按照自定义条件合并单元格,只是单纯的设置AllowCellMerge属性为true是无法实现的,要重新设置
GridControl 控件的CellMerge监听事情,在CellMerge事件中设置合并的条件筛选事件。
实现步骤
/// <summary> /// 自定义合并列 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gvSummary_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e) { //只合并以下列名的单元格,其他列一律不合并 if (e.Column.FieldName == "FCheckDisplay" || e.Column.FieldName == "FOutPlanNo" || e.Column.FieldName == "FSaleOrderNo" || e.Column.FieldName == "FBatchNo" || e.Column.FieldName == "FDeliveryTypeName" || e.Column.FieldName == "FDeliveryTime" || e.Column.FieldName == "FCustName" || e.Column.FieldName == "FProductCode" || e.Column.FieldName == "FProductName" || e.Column.FieldName == "FSpecsName" || e.Column.FieldName == "FMaterialStatus" || e.Column.FieldName == "FNum" || e.Column.FieldName == "FWeight" || e.Column.FieldName == "FMakeDate" ||e.Column.FieldName == "FMaker" || e.Column.FieldName == "FIssuer" || e.Column.FieldName == "FIssueDate") { int row1 = e.RowHandle1; int row2 = e.RowHandle2; string value1 = gvSummary.GetDataRow(row1)["FOutPlanNo"].ToString(); string value2 = gvSummary.GetDataRow(row2)["FOutPlanNo"].ToString(); if (value1 != value2) { e.Merge = false; //值相同的2个单元格是否要合并在一起 e.Handled = true; //合并单元格是否已经处理过,无需再次进行省缺处理 } } }