找回密码
 立即注册

QQ登录

只需一步,快速开始

橘子1

注册会员

1

主题

4

帖子

15

积分

注册会员

积分
15
  • 43

    金币

  • 1

    主题

  • 4

    帖子

最新发帖
橘子1
注册会员   /  发表于:2024-7-9 16:48  /   查看:1274  /  回复:6
1金币

最佳答案

查看完整内容

cellStates V15就支持的。 另外楼上的回复虽然可行,但是是可能会存在性能问题的,并且hover的效果是无法实现的,在没有cellStates 之前我们不得已会这么做来满足需求,但是既然V15已经做了这个功能,建议还是用cellStates 来实现,并且V15也是支持的。您说的sheet没有打印到cellStates属性指的又是什么呢?

6 个回复

倒序浏览
最佳答案
最佳答案
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-9 16:48:06
来自 7#
cellStates V15就支持的。
image.png365932311.png
另外楼上的回复虽然可行,但是是可能会存在性能问题的,并且hover的效果是无法实现的,在没有cellStates 之前我们不得已会这么做来满足需求,但是既然V15已经做了这个功能,建议还是用cellStates 来实现,并且V15也是支持的。您说的sheet没有打印到cellStates属性指的又是什么呢?
回复 使用道具 举报
eat_grape_5
高级会员   /  发表于:2024-7-10 09:31:43
2#
楼主的具体需求是怎样的?比如切换选中区域或者划过之后字体是否需要还原为去加粗的形式?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-10 09:32:35
3#
可以考虑使用单元格状态,给冻结的范围添加两个单元格状态,分别是:hover(鼠标滑过),selected(鼠标选中),在对应的状态中给单元格设置粗体,详情可以参考单元格状态的相关设置教程
https://demo.grapecity.com.cn/sp ... introduction/purejs
回复 使用道具 举报
橘子1
注册会员   /  发表于:2024-7-10 16:19:07
4#
Clark.Pan 发表于 2024-7-10 09:32
可以考虑使用单元格状态,给冻结的范围添加两个单元格状态,分别是:hover(鼠标滑过),selected(鼠标选 ...

15.1.3版本sheet没有打印到cellStates属性呢
回复 使用道具 举报
橘子1
注册会员   /  发表于:2024-7-10 16:21:38
5#
eat_grape_5 发表于 2024-7-10 09:31
楼主的具体需求是怎样的?比如切换选中区域或者划过之后字体是否需要还原为去加粗的形式?

鼠标选中或者划过区域字体加粗,否则还原,类似于A、B、C这列的鼠标选中和划过的样式,只不过我这个不是表头,是表体冻结了两行成为了一个假表头
回复 使用道具 举报
eat_grape_5
高级会员   /  发表于:2024-7-10 17:00:17
6#
本帖最后由 eat_grape_5 于 2024-7-10 17:02 编辑
橘子1 发表于 2024-7-10 16:21
鼠标选中或者划过区域字体加粗,否则还原,类似于A、B、C这列的鼠标选中和划过的样式,只不过我这个不是 ...

CellStatesType很方便,不过没关系,曲线救国绕道实现,思路如下:
1. 给工作表注册CellClick事件。
2. 在事件处理函数中判断被点击的单元格是否在冻结行范围内,如果在服务区内则获取选中区域,对选中区域单元格设置字体风格为加粗,但在这之前获取单元格原有风格,用于在点击其他单元格后将上一次操作的单元格字体风格还原。

代码如下:
  1. var oldStyle;
  2. var oldRange;
  3. sheet.unbind(GC.Spread.Sheets.Events.CellClick);
  4. sheet.bind(GC.Spread.Sheets.Events.CellClick, function(e, args) {
  5.     if (oldRange && oldStyle) {
  6.         oldRange.setStyle(oldStyle);
  7.     }
  8.     if (args.row < 3) {  // 以冻结前三行为例
  9.         var selectionArea = sheet.getSelections()[0];
  10.         var row = selectionArea.row, col = selectionArea.col, rowCount = selectionArea.rowCount, colCount = selectionArea.colCount;

  11.         oldRange = sheet.getRange(row, col, rowCount, colCount);
  12.         oldStyle = sheet.getStyle(row, col);

  13.         var style = new GC.Spread.Sheets.Style();
  14.         style.fontStyle = 'bold';
  15.         sheet.getRange(row, col, rowCount, colCount).setStyle(style);
  16.     }
  17. });
复制代码





回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部