找回密码
 立即注册

QQ登录

只需一步,快速开始

Wilson.Zhang
超级版主   /  发表于:2024-11-30 19:28  /   查看:138  /  回复:2
本帖最后由 Wilson.Zhang 于 2024-12-3 08:34 编辑

背景:SpreadJS较早的版本不支持Microsoft Excel的高亮行列功能,可以通过事件和样式自定义实现。
问题原帖:https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=228940

通过对单元格设置样式可以凸显单元格,如果以被选中的单元格为中心,将样式横向扩展至单元格所在行的所有单元格,同理,沿纵向扩展至单元格所在列所有单元格,那么,强调效果更突出。Microsoft Excel中支持了这一功能,通过菜单栏视图选项卡中的功能按钮即可触发。SpreadJS虽然未提供相同功能的工具栏按钮,但是通过公开API可以自定义实现,使得高亮的样式不再单一,灵活多变。

假定以点击单元格为触发源,希望在点击单元格时呈现上述的高亮效果,而在光标离开单元格点击另外的单元格时,高亮效果由旧区域移至新区域。那么,可以结合CellClick和ActiveCellChanged事件实现,具体思路如下:对Worksheet注册ActiveCellChanged事件,该事件在切换单元格时被触发,可以监听到切换前后单元格的行列索引,对切换前的行列和活动单元格移除样式,对切换后的行列和当前活动单元格设置样式。至于如何设置样式中的各属性,完全可以根据业务需求自行定义。

上述思路的执行效果如图1所示,附上demo,以供参考。

自定义高亮行列.gif

图1. 高亮行列

自定义高亮行列.html

5.92 KB, 下载次数: 10

2 个回复

倒序浏览
阿仁
初级会员   /  发表于:2024-12-18 15:46:31
沙发
15版本可以用吗,加上之后没有效果
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-12-18 16:08:09
板凳
阿仁 发表于 2024-12-18 15:46
15版本可以用吗,加上之后没有效果

您好!这个方案通过监听ActiveCellChanged事件实时渲染活动单元格同行同列其他单元格的样式背景色。15版本不支持ActiveCellChanged事件。

您可以使用SpreadJS的行列状态,15版本也支持,如下动图所示:
行列状态.gif

请参考官网教程了解详情:
https://demo.grapecity.com.cn/sp ... olumn-states/purejs
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部