在DevExpress中GridControl中纵向合并单元格只需要设置
this.gridView1.OptionsView.AllowCellMerge = true;
列默认是可合并的,若设置某列不可合并可设置该列为
this.gridColumn1.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False;
下文主要解决如何设置第二列根据第一列的结果合并单元格,默认显示效果如下图
B列时默认合并的,想要的效果如下图
主要是设置gridview的cellmerge事件
private void gridView1_CellMerge(object sender, CellMergeEventArgs e)
{
GridView view = sender as GridView;
string firstColumnFieldName = "Time", secondColumnFieldName = "B";
if (e.Column.FieldName == secondColumnFieldName)
{
string valueFirstColumn1 = Convert.ToString(view.GetRowCellValue(e.RowHandle1, view.Columns[firstColumnFieldName]));
string valueFirstColumn2 = Convert.ToString(view.GetRowCellValue(e.RowHandle2, view.Columns[firstColumnFieldName]));
string valueSecondColumn1 = Convert.ToString(view.GetRowCellValue(e.RowHandle1, view.Columns[secondColumnFieldName]));
string valueSecondColumn2 = Convert.ToString(view.GetRowCellValue(e.RowHandle2, view.Columns[secondColumnFieldName]));
e.Merge = valueFirstColumn1 == valueFirstColumn2 && valueSecondColumn1 == valueSecondColumn2;
e.Handled = true;
}
}
RowHandle1是每个合并单元格的第一行Handle,从0开始
RowHandle2是每行的handle,从1开始,到最后一行handle结束
如果正常的话,如上图运行时RowHandle1应该保持4次0,然后4次4,4次8,以此类推
Rowhandle2,从1开始直至行最后Rowhandle结束。
RowHandle1为0时,RowHandle2从1至4,
RowHandle1为1时,RowHandle2从5至8,以此类推。