找回密码
 立即注册

QQ登录

只需一步,快速开始

zhanglibin

初级会员

28

主题

91

帖子

257

积分

初级会员

积分
257
zhanglibin
初级会员   /  发表于:2021-11-15 15:53  /   查看:3487  /  回复:11
本帖最后由 Derrick.Jiao 于 2021-12-2 15:21 编辑

image.png879422302.png
image.png153659972.png
image.png646001281.png
image.png723314819.png
核心代码:
sheet.sortRange(_this.startSortRow, 0, hitInfo.rowCount - _this.startSortRow, -1, true,
    [
        { index: col, ascending: sortFlag, compareFunction: pinyinCompare }
    ],
    {groupSort: 3, ignoreHidden: false}
    );
ignoreHidden: false好像没生效

11 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-15 18:18:04
沙发
本帖最后由 Derrick.Jiao 于 2021-12-13 09:39 编辑

问题已复现,这边会做进一步调研,此帖改为保留处理,有进展会在本帖更新。
————————————————————————————————
经确认,当groupSort的option为group/child/full时 ,ignorehidden是不会生效的,这个属于产品设计。如需生效请指定为none。
回复 使用道具 举报
zhanglibin
初级会员   /  发表于:2021-11-15 21:09:31
板凳
好的,这边等你消息,谢谢
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-16 10:20:52
地板
本帖最后由 Derrick.Jiao 于 2021-12-2 15:23 编辑
zhanglibin 发表于 2021-11-15 21:09
好的,这边等你消息,谢谢

不用客气,这边有调研结果或者进展后会在本帖更新~
——————————————————————

经确认,当groupSort的option为group/child/full时 ,ignorehidden是不会生效的,这个属于产品设计。如需生效请指定为none,例如这个demo。

online (1).html

2.09 KB, 下载次数: 75

回复 使用道具 举报
zhanglibin
初级会员   /  发表于:2022-1-26 03:48:36
5#
Derrick.Jiao 发表于 2021-11-16 10:20
不用客气,这边有调研结果或者进展后会在本帖更新~
——————————————————————

您的例子只有单列,并不能说明问题;附件是我修改后的demo,将groupSort:设置为GC.Spread.Sheets.GroupSort.none,依然存在上述问题

sort-demo.html.zip

1.74 KB, 下载次数: 109

回复 使用道具 举报
zhanglibin
初级会员   /  发表于:2022-1-26 09:37:47
6#
请对上边的demo中行数据出现的混乱,做出合理性解释!
image.png445481566.png
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-1-26 10:46:59
7#
zhanglibin 发表于 2022-1-26 09:37
请对上边的demo中行数据出现的混乱,做出合理性解释!

问题已收到,这边需要做进一步确认,有进展会第一时间在本帖更新(SJS-11765)
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-2-9 11:16:29
8#
SpreadJS目前设计就是这样,spreadjs工作表排序是一种范围排序,它将交换排序范围内的数据,换句话说,不在该范围内的数据不会被更改。
因此,在客户的情况下,实际上,它没有对数据记录进行排序,而是按单元格值对单元格进行排序,然后将值同步回数据源。
解决方法。
使用下面的代码
sheet.autoGenerateColumns = false;
sheet.setColumnCount(3);
sheet.setDataSource(test);
sheet.bindColumn(0, "Series0");
sheet.bindColumn(1, "Series1");
sheet.bindColumn(2, "a");
sheet.setColumnVisible(2, false);
2.如果想要对数据源进行排序,可以直接对数据源进行排序,然后重新绘制表格。
回复 使用道具 举报
zhanglibin
初级会员   /  发表于:2022-2-9 11:27:25
9#
本帖最后由 zhanglibin 于 2022-2-9 11:28 编辑

请问潘老师,你给出的解决办法您做测试了吗?按照您的办法做出代码修改:
// sheet.setDataSource(test);
// sheet.bindColumn(0,"Series0");
// sheet.bindColumn(1,"Series1");
// sheet.setColumnCount(2);
sheet.autoGenerateColumns = false;
sheet.setColumnCount(3);
sheet.setDataSource(test);
sheet.bindColumn(0, "Series0");
sheet.bindColumn(1, "Series1");
sheet.bindColumn(2, "a");
sheet.setColumnVisible(2, false);

这是我的测试结果:
image.png761110534.png

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-2-9 11:36:09
10#
本帖最后由 Clark.Pan 于 2022-2-9 11:44 编辑

没毛病啊,你demo中写的sortRange(0, 0, 3, 2)就排前两列啊,有什么问题?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部