单元格合并 当使用grid列示数据时,如果某一行某列数据和上一行的对应列数据相同时,我们想把该列的显示隐含。 所有band中的所有列。 this.ultraGrid1.DisplayLayout.Override.MergedCellStyle = MergedCellStyle.Always 其值还可以是: OnlyWhenSorted:只在排序时候合并 Never:从不合并 也可以针对具体的列来设置,如: this.ultraGrid1.DisplayLayout.Bands[1].Columns["SpecWth"].MergedCellStyle = MergedCellStyle.Never; 合并可以按文本相同或者值相同,如: this.ultraGrid1.DisplayLayout.Bands[1].Columns["SpecWth"].MergedCellEvaluationType = MergedCellEvaluationType.MergeSameText; 但有时这种合并还是不能满足我们的要求,那我们可以自定义条件合并即可。 实现如下: public class CustomMergedCellEvaluator : IMergedCellEvaluator { UltraGridColumn[] ugcs; public CustomMergedCellEvaluator(UltraGridColumn[] keys) { this.ugcs = keys; } public bool ShouldCellsBeMerged(UltraGridRow row1, UltraGridRow row2, UltraGridColumn column) { bool keyIsSame = KeyIsSame(row1, row2, this.ugcs); if (keyIsSame == true) return row1.Cells[column].Value.ToString () == row2.Cells[column].Value.ToString(); else return false; } private bool KeyIsSame(UltraGridRow row1, UltraGridRow row2, UltraGridColumn[] keys) { //定义合并的逻辑 return keyIsSame; } } 这时我们在column中设置如下,即可按我们的条件合并了。 ustomMergedCellEvaluator cmce = new CustomMergedCellEvaluator(new UltraGridColumn[]{ultraGrid1.DisplayLayout.Bands[1].Columns[0],ultraGrid1.DisplayLayout.Bands[1].Columns[1]}); column.MergedCellEvaluator = cmce; column.MergedCellStyle = MergedCellStyle.Always; column.MergedCellEvaluationType = MergedCellEvaluationType.MergeSameText; 其实现也就如此的简单。