请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

飞雪连天射

初级会员

20

主题

32

帖子

204

积分

初级会员

积分
204
飞雪连天射
初级会员   /  发表于:2025-4-8 22:16  /   查看:56  /  回复:3
1金币

未合并单元格前分隔线显示正确

合并单元格后分隔线在合并的单元格无法正确显示,如何处理?尽量不使用OwnerDrawCell实现


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

3 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-4-9 12:27:56
沙发
如你看到的,正是由于单元格被合并了,所以你给被合并的单元格或者对应行设置样式是没有用的,比如你截图中标注的红线,实际上都是第一行的单元格,分别应该是(1,1)(1,4)单元格,你得给这些单元格设置样式才行,按照这个思路,代码应该这样写

  1. try
  2. {

  3.     string prevGroupValue = "";
  4.     for (int row = grid.Rows.Fixed; row < grid.Rows.Count; row++)//Fixed=1
  5.     {

  6.         string currentGroupValue = grid.GetData(row, columnIndex)?.ToString() ?? "";    //获取当前行的值
  7.         if (currentGroupValue != prevGroupValue)
  8.         {
  9.             if (row == grid.Rows.Fixed)    //行头(列标题行)不作判断
  10.             {
  11.                 prevGroupValue = currentGroupValue;
  12.                 continue;
  13.             }

  14.             // 应用分组线样式到整行,为上一行设置线
  15.             grid.Rows[row - 1].Style = grid.Styles["GroupLine"];
  16.             grid.SetCellStyle(row, 1, grid.Styles["GroupLine"]);
  17.             grid.SetCellStyle(row, 4, grid.Styles["GroupLine"]);



  18.             prevGroupValue = currentGroupValue;
  19.         }
  20.         else
  21.         {
  22.             grid.Rows[row].Style = grid.Styles.Normal;  //非分组行设置为标准样式
  23.         }
  24.     }
  25.     grid.SetCellStyle(1, 1, grid.Styles["GroupLine"]);
  26.     grid.SetCellStyle(1, 4, grid.Styles["GroupLine"]);

  27. }
复制代码


最终效果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
飞雪连天射
初级会员   /  发表于:2025-4-9 14:39:18
板凳
Richard.Ma 发表于 2025-4-9 12:27
如你看到的,正是由于单元格被合并了,所以你给被合并的单元格或者对应行设置样式是没有用的,比如你截图中 ...

感谢,但是我绑定的数据分组是动态的时候,如何能正确找到分组行列的单元格设置SetCellStyle,通过行循环如何判断该行中哪些单元格是已合并的
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-4-9 18:03:49
地板
目前只有自定义的合并单元格才能被获取到,这种自动合并的只能通过单元格值来自己写逻辑判断了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部