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

QQ登录

只需一步,快速开始

齐天大猫

金牌服务用户

57

主题

143

帖子

498

积分

金牌服务用户

积分
498
齐天大猫
金牌服务用户   /  发表于:2025-1-21 18:13  /   查看:107  /  回复:7
1金币
本帖最后由 Wilson.Zhang 于 2025-2-5 10:03 编辑

产品:SpreadJS
版本:17.1.10
调研编号:SJS-28115
Last Review:2025-02-05
当前进展:已提供workaround,计划在18.0.3版本修复。

1. 打开文件导入导出示例
https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/spreadjs-file-format/overview/purejs

2. 导入 ssjson 文件 “筛选异常.ssjson”

3. 点击“分拣”表单第一列列标题中的筛选按钮

4. 控制台有异常
image.png547599486.png

筛选异常.ssjson

925.33 KB, 下载次数: 2

评分

参与人数 1金币 +500 收起 理由
Wilson.Zhang + 500 感谢反馈

查看全部评分

7 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2025-1-22 09:57:50
沙发
您好!导入您提供的ssjson文件,看到如下图所示的页面,这样会在筛选器中引入表头内容:
1737510814713.png98250426.png

我理解,一般情况下,应该只会使用除表头以外的列数据作为筛选项。需要跟您了解下详细需求。
回复 使用道具 举报
万水千山
注册会员   /  发表于:2025-1-23 10:44:30
板凳
Wilson.Zhang 发表于 2025-1-22 09:57
您好!导入您提供的ssjson文件,看到如下图所示的页面,这样会在筛选器中引入表头内容:

版主,你好!
从研发角度,我理解你的观点,这个用例确实有不合理的地方。
但是从用户角度,我不认可你的观点,用户看到的现象是:选中单元格,点解筛选,整个页面失去响应了。
1. 不管用户是误操作还是故意为之,说到底就是SJS软件自身鲁棒性、容错性不足。因为线下 Excel 这种情况并没有错。
2. 修复成本也很低,在出错的地方判断一下,甚至加上try catch都能接受。
用户的用户,大部分不具备计算机专业的知识。决策时,请不要忘记这些用户。谢谢!
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-1-23 11:48:22
地板
万水千山 发表于 2025-1-23 10:44
版主,你好!
从研发角度,我理解你的观点,这个用例确实有不合理的地方。
但是从用户角度,我不认可你 ...

客户您好!如您所言,我确有考虑作为SpreadJS使用客户的您也有更上游的客户。无论从研发角度还是使用者角度,我都理解您的观点。
正如您所言之,最终使用用户大部分不具备计算机专业的知识。那么,作为研发,需要设计和开发合理的使用方式,引导最终用户在正确的方式下使用产品功能。2楼的内容是提示并确认您文件中的结构是否确实的使用场景。

关于本贴所说的问题,我已经帮您调研了,调研编号为SJS-28115。请您耐心等候,之后会及时向您同步结论。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-1-23 15:11:08
5#
您好!经调研,确认该现象是个bug,在进一步调研修复方案,当下提供一个workaround如下代码所示:
  1. var designer = GC.Spread.Sheets.Designer.findControl('gc-designer-container');
  2. var spread = designer.getWorkbook();
  3. var sheet = spread.getActiveSheet();
  4. GC.Spread.Sheets.Filter.HideRowFilter.ListValueCompareFn = function (a, b, context) {
  5.   let { colIndex } = context;
  6.   let dataTypePriority = { date: 0, number: 1, string: 2, boolean: 3, blank: 4 };
  7.   let aValue = a.value, bValue = b.value, aValueType = a.type, bValueType = b.type;
  8.   if (aValueType !== bValueType) {
  9.     if (dataTypePriority[aValueType] < dataTypePriority[bValueType]) {
  10.       return -1;
  11.     }
  12.     return 1;
  13.   }
  14.   if (aValueType === 'date' && bValueType === 'date') {
  15.     let aYear = aValue.getFullYear?aValue.getFullYear():aValue, bYear = bValue.getFullYear?bValue.getFullYear():bValue;
  16.     if (aYear < bYear) {
  17.       return colIndex === 1 ? -1 : 1;
  18.     } else if (aYear > bYear) {
  19.       return colIndex === 1 ? 1 : -1;
  20.     }
  21.   }
  22.   if (aValueType === 'string' && bValueType === 'string') {
  23.     aValue = aValue.toLowerCase();
  24.     bValue = bValue.toLowerCase();
  25.   }
  26.   if (aValue > bValue) {
  27.     return 1;
  28.   }
  29.   return aValue < bValue ? -1 : 0;
  30. }
复制代码

测试已验证上述代码有效,如下动图所示:
日期筛选.gif
回复 使用道具 举报
万水千山
注册会员   /  发表于:2025-1-23 15:18:01
6#
Wilson.Zhang 发表于 2025-1-23 15:11
您好!经调研,确认该现象是个bug,在进一步调研修复方案,当下提供一个workaround如下代码所示:

测试 ...

感谢你的workaround,bug对应的修复会包含在下次两周发布中吗?
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-1-23 15:21:53
7#
万水千山 发表于 2025-1-23 15:18
感谢你的workaround,bug对应的修复会包含在下次两周发布中吗?

您客气了,这是我应该做的。目前还在进一步调研修复方案,暂不确定具体的修复版本。待确定版本及版本发布后,我们都会及时通知您。
请您耐心等候,在此之前,请使用workaround。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-2-5 10:05:12
8#
您好!经过产品侧的详细调研,计划在18.0.3版本修复该问题。我们会在修复版本发布后及时通知您,届时您可以升级版本后使用,您也可以关注产品版本发布动态。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部