找回密码
 立即注册

QQ登录

只需一步,快速开始

阿达西

注册会员

4

主题

13

帖子

49

积分

注册会员

积分
49
最新发帖
阿达西
注册会员   /  发表于:2024-11-13 14:40  /   查看:307  /  回复:15
1金币
本帖最后由 阿达西 于 2024-11-13 15:29 编辑

在其他帖子中看到这个效果,请教一下如何在SpreadJS的表格中第一列(行表头)实现为复选框,同时还想要自定义复选框的样式
image.png663947448.png

15 个回复

正序浏览
Wilson.Zhang
超级版主   /  发表于:2024-11-28 08:34:08
16#
阿达西 发表于 2024-11-27 17:07
可以了,非常感谢大佬

不客气,解决了就好,那就结帖了。如有新问题,欢迎发新帖沟通。
回复 使用道具 举报
阿达西
注册会员   /  发表于:2024-11-27 17:07:36
15#
Wilson.Zhang 发表于 2024-11-27 12:17
可以监听SelectionChanging事件,当点击表角时会选中整张sheet,该事件可以监听到被选择的区域,包含起始 ...

可以了,非常感谢大佬
回复 使用道具 举报
阿达西
注册会员   /  发表于:2024-11-27 09:49:07
13#
Wilson.Zhang 发表于 2024-11-26 17:21
您好!
问题1:点击表角选中整张sheet,相当于选中区域为整张sheet,通过Worksheet:clearSelection()清 ...

问题1有没有办法可以阻止表角的默认行为,如果通过Worksheet:clearSelection()取消全选,会出现先全选然后取消的效果,感觉不太好
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-26 17:21:03
12#
阿达西 发表于 2024-11-26 14:41
大佬,还有两个问题。
1、在点击表角,处理全选行为的时候,因为点击了表角,会选中全部表格视图,怎么 ...

您好!
问题1:点击表角选中整张sheet,相当于选中区域为整张sheet,通过Worksheet:clearSelection()清除选择即可。

问题2:尝试下在一键设置行头复选框的for循环前后分别加上Worksheet:suspendPaint()暂停绘制和Worksheet:resumePaint()恢复绘制语句以辅助优化。
回复 使用道具 举报
阿达西
注册会员   /  发表于:2024-11-26 15:21:22
11#
本帖最后由 阿达西 于 2024-11-26 15:25 编辑
阿达西 发表于 2024-11-26 14:41
大佬,还有两个问题。
1、在点击表角,处理全选行为的时候,因为点击了表角,会选中全部表格视图,怎么 ...

问题2解决了,在操作sheet前执行spread.suspendPaint(),操作完成后执行spread.resumePaint()。9000多条数据,每次操作都保持在90ms左右
image.png462098388.png
回复 使用道具 举报
阿达西
注册会员   /  发表于:2024-11-26 14:41:15
10#
本帖最后由 阿达西 于 2024-11-26 14:57 编辑

大佬,还有两个问题。
1、在点击表角,处理全选行为的时候,因为点击了表角,会选中全部表格视图,怎么取消这个行为?
2、在处理全选时,更新所有复选框的状态性能太低了。105条数据,初始化所有复选框只需要2ms左右,但是更新所有复选框的状态却需要9000ms左右,怎么优化这块的性能呢? image.png99519347.png image.png320251158.png
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-18 15:47:46
9#
阿达西 发表于 2024-11-18 15:42
问题2处理了,通过重写实现的。参考这个实现的https://jscodemine.grapecity.com/share/peTXcmedK0iiMEqv6U ...



也是个好方法!
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-18 15:47:12
8#
本帖最后由 Wilson.Zhang 于 2024-11-18 16:34 编辑
阿达西 发表于 2024-11-18 14:58
您好,继续请教一下问题。第一张截图是我的代码实现复选框的代码

问题1:通过表角一键为行头所有复选框设置相同的状态,无外乎两种情况:其一是所有复选框均被选中,那么此时表角被点击后所有复选框的状态应该均被设置为”未选择“;其二是有部分复选框未被选中,此时点击表角希望可以选择所有复选框。那么,可以在表角被双击时,遍历行头所有复选框的值,以此判断。只要遇到”未选择“复选框,即返回false,否则返回true,设置值时对判断结果取反即可。

如下动图所示:
点击表角设置行头复选框状态.gif

可参考如下图所示代码:
一键控制行头.png698933410.png

问题2:与问题1相同,请参见对问题1的回答所述。

问题3:获取某行数据的关键是知悉该行索引,CellDoubleClick事件即可监听被点击的行头复选框的行索引,通过该行索引即可逐个获取行内各单元格的数据。

如上所述,您可以亲测下看是否能够满足您的需求。
回复 使用道具 举报
阿达西
注册会员   /  发表于:2024-11-18 15:42:51
7#
本帖最后由 阿达西 于 2024-11-18 16:30 编辑

问题1处理了,通过重写实现的。参考这个实现的https://jscodemine.grapecity.com/share/peTXcmedK0iiMEqv6UBCUg/
回复 使用道具 举报
阿达西
注册会员   /  发表于:2024-11-18 14:58:49
6#
本帖最后由 阿达西 于 2024-11-18 15:15 编辑
Wilson.Zhang 发表于 2024-11-15 17:15
您好!逐一解答您关心的问题:

问题1:对Worksheet监听CellDoubleClick事件,双击单元格可触发该事件 ...

您好,继续请教一下问题。第一张截图是我的代码实现复选框的代码
image.png724946288.png


问题1:如何把表角修改为勾选全部的复选框?首先需要修改为复选框的样式,这个代码是真不知道该怎么写[笑哭]
问题2:目前这段代码单击和双击复选框,复选框的状态都不会改变,以下截图为控制台输出
image.png892504272.png
问题3:复选框想要绑定rowId,和数据绑定,比如勾选了某一行数据,进行操作时,可以通过rowId获取勾选行的数据
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部