dev GridControl 按条件纵向合并单元格
gridView5.OptionsView.AllowCellMerge = true;
gridView5.CellMerge += gridView5_CellMerge;
//自定义合并单元格监听事件void gridView5_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e){int rowHandle1 = e.RowHandle1;int rowHandle2 = e.RowHandle2;string strValue1 = gridView5.GetDataRow(rowHandle1)["chbwtypename"].ToString(); //获取分数列值string strValue2 = gridView5.GetDataRow(rowHandle2)["chbwtypename"].ToString();if (strValue1 != strValue2){e.Merge = false; //值相同的2个单元格是否要合并在一起e.Handled = true; //合并单元格是否已经处理过,无需再次进行省缺处理}if (e.Column.FieldName != "chbwtypename") //只对分数这一列进行合并,其他列一律不合并{e.Merge = false; //值相同的2个单元格是否要合并在一起e.Handled = true; //合并单元格的操作是否已经处理过,不再需要进行省缺处理}}
反向合并
//自定义合并单元格监听事件
void gridView4_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e)
{
if (e.Column.FieldName == "chbJwightnum")
{
var val1 = gridView4.GetRowCellValue(e.RowHandle1, e.Column);
var val2 = gridView4.GetRowCellValue(e.RowHandle2, e.Column);
e.Merge = val1 == val2;
e.Handled = true;
}
if (e.Column.FieldName == "chbJrewightnum")
{
var val1 = gridView4.GetRowCellValue(e.RowHandle1, e.Column);
var val2 = gridView4.GetRowCellValue(e.RowHandle2, e.Column);
e.Merge = val1 == val2;
e.Handled = true;
}
if (e.Column.FieldName == "chbjscore")
{
var val1 = gridView4.GetRowCellValue(e.RowHandle1, e.Column);
var val2 = gridView4.GetRowCellValue(e.RowHandle2, e.Column);
e.Merge = val1 == val2;
e.Handled = true;
}
if (e.Column.FieldName == "chbjrescore")
{
var val1 = gridView4.GetRowCellValue(e.RowHandle1, e.Column);
var val2 = gridView4.GetRowCellValue(e.RowHandle2, e.Column);
e.Merge = val1 == val2;
e.Handled = true;
}
}
===============
/// <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; //合并单元格是否已经处理过,无需再次进行省缺处理}}}