找回密码
 立即注册

QQ登录

只需一步,快速开始

钛和集团

初级会员

34

主题

120

帖子

382

积分

初级会员

积分
382
钛和集团
初级会员   /  发表于:2024-5-30 20:19  /   查看:554  /  回复:15
本帖最后由 钛和集团 于 2024-5-31 10:34 编辑

image.png615516967.png
1.比如我现在选中了3个,然后取消了一个,但是还是显示3个
image.png349496764.png
2.然后我shift直接指定范围,只显示点击的那个了,如何获取全部呢
image.png87676085.png
3.我按ctrl键选中和取消选中,这个返回值变成返回两个值了
image.png979334716.png
并且选了1,2,3,4的时候,ctrl键取消4,返回值如下

image.png473699950.png
4.如何只获取选中的数据,如果有筛选过,把筛选后隐藏的数据也去掉

5.点击这个位置,怎么获取全部
image.png716456603.png

我的需求就是要根据选择的行头获取到当前行数据,会有取消选择;会有不选择筛选隐藏的数据;不会连续选择;会shift连着选中一片后,又ctrl键选中单个。如果getSelections用不了,我要怎么实现我想要的需求呢
image.png155653990.png


以下代码
image.png393274535.png






15 个回复

正序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-6-3 18:11:15
16#
好的,如果所有列上都有合并单元格的话暂时没有更好的方案能够满足您的需求了。
回复 使用道具 举报
钛和集团
初级会员   /  发表于:2024-6-3 18:08:23
15#
Joestar.Xu 发表于 2024-6-3 17:46
了解了,新提供的这段代码能否满足您的需求呢?

我这一定要有合并项,所以不太行,用回表格绑定了,舍弃字段名放在列头这个需求了
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-6-3 17:46:02
14#
了解了,新提供的这段代码能否满足您的需求呢?
回复 使用道具 举报
钛和集团
初级会员   /  发表于:2024-6-3 13:39:24
13#
本帖最后由 钛和集团 于 2024-6-3 13:46 编辑
Joestar.Xu 发表于 2024-6-3 11:36
您好,取消选区后选区自动变化的情况这边会进一步调研一下,后续有进展我会在本帖中回复您。

根据您目前 ...

因为开始用的表单绑定,然后想加个checkbox,全选那个嘛,后来不是你们说是数据绑定的整个表单,在第一列加不了复选框,加了的话绑定的值就对不上了,因为数据不能做选择某区域绑定;;;然后用表格绑定,我不想要列头ABCD那个,我想列头是字段名称,,然后你们说做个伪表头,但是呢伪表头做了,筛选跟我说加不了,,,,没办法说能不能表单绑定,然后根据选择行头的1234,来弄全选,,,但是现在看也不太行
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-6-3 11:36:58
12#
您好,取消选区后选区自动变化的情况这边会进一步调研一下,后续有进展我会在本帖中回复您。

根据您目前反馈的情况,我整理了一个新的Demo来帮助您解决:

image.png84866332.png

首先,需要定义一个序号列,这个序号列上不能有任何合并单元格。

然后通过监听SelectionChanged事件,判断选区的列情况,如果选区的列索引为序号列的索引或为-1时,则正常选择。(主要是为了解决取消选区时自动变化导致的错误)

最后根据Range的RowCount判断进入Set的索引,如果RowCount为1,则直接将Row+1作为行号加入Set,如果RowCount不为1,则说明该Range是一个区域,则进行遍历将行号加入Set。

代码如下:

  1. sheet.tag({ checkColumnIndex: 2 });

  2. sheet.bind(GC.Spread.Sheets.Events.SelectionChanged, function (sender, args) {
  3.   console.log(sheet.tag());
  4.   let tag = sheet.tag();
  5.   console.log(args);
  6.   let checkedRows = new Set();
  7.   for (let item of args.newSelections) {
  8.     if (item.col === tag.checkColumnIndex || item.col === -1) {
  9.       if (item.rowCount === 1) {
  10.         checkedRows.add(item.row + 1);
  11.       } else {
  12.         for (let i = item.row; i < item.row + item.rowCount; i++) {
  13.           checkedRows.add(i + 1);
  14.         }
  15.       }
  16.     }
  17.   }
  18.   console.log(checkedRows);
  19. });
复制代码


另外,您这边为什么不使用CheckBox来解决这个问题呢?
回复 使用道具 举报
钛和集团
初级会员   /  发表于:2024-5-31 18:53:56
11#
Joestar.Xu 发表于 2024-5-31 17:40
您好,在SelectionChanged事件中可以监听到是否按下了Shift键,当shiftKey为true时,可以将newSelections中 ...

这个还是不行啊,我选中1,2,5,8,9,10条数据,返回的是对的,

image.png51934813.png
然后ctrl键取消5,row = 6也就是7被返回回来了,但是7我是没有选择的
image.png133568724.png

image.png679506835.png
回复 使用道具 举报
钛和集团
初级会员   /  发表于:2024-5-31 18:20:01
10#
本帖最后由 钛和集团 于 2024-5-31 18:21 编辑
Joestar.Xu 发表于 2024-5-31 18:06
您好,根据您的描述我不太能复现出这些问题,能否请您再详细描述一下,或者提供一个视频\动图来帮助说明问 ...

你就根据我上面的截图或者demo里的数据,选中多条然后用ctrl键取消选中就能复现了
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-31 18:06:59
9#
您好,根据您的描述我不太能复现出这些问题,能否请您再详细描述一下,或者提供一个视频\动图来帮助说明问题。
回复 使用道具 举报
钛和集团
初级会员   /  发表于:2024-5-31 17:53:34
8#
钛和集团 发表于 2024-5-31 15:30
1.还有这个问题,我取消选中了,这个合并的怎么1,2,3,4都选上了,怎么能取消选择后还是是下图这样 ...

还有这个呢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部