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

QQ登录

只需一步,快速开始

shwx官方

金牌服务用户

8

主题

24

帖子

124

积分

金牌服务用户

积分
124
shwx官方
金牌服务用户   /  发表于:2025-4-14 10:12  /   查看:84  /  回复:3
1金币
本帖最后由 Ellia.Duan 于 2025-4-18 15:22 编辑

image.png685368041.png image.png239825743.png

请问SpreadJS,是否可以做成类似的全选框功能

最佳答案

查看完整内容

您好!可以监听CellClick和CellChanged事件控制。 1. CellClick事件监听对列头中复选框的点击动作,将同列中viewport区域的复选框与列头复选框的勾选状态调整为一致。可参考如下代码: 2. CellChanged事件监听到对该列viewport区域中复选框的点击动作时,计数以判断列头复选框的勾选状态。可以参考如下代码: 附上完整demo,供您参考。

3 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2025-4-14 10:12:55
来自 2#
您好!可以监听CellClickCellChanged事件控制。

1. CellClick事件监听对列头中复选框的点击动作,将同列中viewport区域的复选框与列头复选框的勾选状态调整为一致。可参考如下代码:
  1. sheet.bind(GC.Spread.Sheets.Events.CellClick, function(e, args) {
  2.     console.log('cell click, args: ', args);
  3.     if (args.sheetArea === GC.Spread.Sheets.SheetArea.colHeader) {
  4.         sheet.suspendPaint();
  5.         var tempValue = sheet.getValue(args.row, args.col, args.sheetArea);
  6.         sheet.setValue(0, 0, !tempValue, GC.Spread.Sheets.SheetArea.colHeader);
  7.         for (var i = 0; i < checkBoxRowCount; i++) {
  8.             if (!sheet.getValue(i, 0, GC.Spread.Sheets.SheetArea.viewport) ||
  9.                 sheet.getValue(i, 0, GC.Spread.Sheets.SheetArea.viewport) === tempValue) {
  10.                 sheet.setValue(i, 0, !tempValue, GC.Spread.Sheets.SheetArea.viewport);
  11.             }
  12.         }
  13.         sheet.resumePaint();
  14.     }
  15.     });
复制代码

2. CellChanged事件监听到对该列viewport区域中复选框的点击动作时,计数以判断列头复选框的勾选状态。可以参考如下代码:
  1. var flag = 0;
  2.     sheet.bind(GC.Spread.Sheets.Events.CellChanged, function(e, args) {
  3.     console.log('cell changed, args: ', args);
  4.     if (sheet.getCellType(args.row, args.col) instanceof GC.Spread.Sheets.CellTypes.CheckBox) {
  5.         if (args.sheetArea === GC.Spread.Sheets.SheetArea.viewport) {
  6.             flag += sheet.getValue(args.row, args.col) ? 1 : -1;
  7.             if (flag === checkBoxRowCount) {
  8.                 sheet.setValue(0, 0, true, GC.Spread.Sheets.SheetArea.colHeader);
  9.             }
  10.             if (flag < checkBoxRowCount) {
  11.                 if (sheet.getValue(0, 0, GC.Spread.Sheets.SheetArea.colHeader)) {
  12.                     sheet.setValue(0, 0, false, GC.Spread.Sheets.SheetArea.colHeader);
  13.                 }
  14.             }
  15.         }
  16.     }
  17.     });
复制代码

附上完整demo,供您参考。

复选框全选.html

5.87 KB, 下载次数: 7

回复 使用道具 举报
shwx官方
金牌服务用户   /  发表于:7 天前
3#
解决了,谢谢支持
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:7 天前
4#
shwx官方 发表于 2025-4-17 10:05
解决了,谢谢支持

不客气,问题既已得到解决,那就结贴了。如遇新问题,欢迎发新帖沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部