读书笔记 UltraGrid(16)

单元格合并
当使用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;
其实现也就如此的简单。

 


 

posted on   木人(我现在不是老大)  阅读(725)  评论(0编辑  收藏  举报

编辑推荐:
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
阅读排行:
· 手把手教你更优雅的享受 DeepSeek
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现

导航

< 2012年2月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 1 2 3
4 5 6 7 8 9 10
点击右上角即可分享
微信分享提示