找回密码
 立即注册

QQ登录

只需一步,快速开始

balalala

注册会员

13

主题

50

帖子

139

积分

注册会员

积分
139

[已处理] 14.1.5排序问题

balalala
注册会员   /  发表于:2021-12-8 13:32  /   查看:2225  /  回复:9
本帖最后由 Lynn.Dou 于 2021-12-14 16:52 编辑

目前版本表单排序对汉字不太友好,顺序不正确。有木有好的解决方案?

9 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-12-8 13:40:10
沙发
您好,可以使用自定义排序来对中文排序,
具体请参考下方链接文章:
https://gcdn.grapecity.com.cn/showtopic-76559-1-17.html
回复 使用道具 举报
balalala
注册会员   /  发表于:2021-12-9 17:06:11
板凳
Lynn.Dou 发表于 2021-12-8 13:40
您好,可以使用自定义排序来对中文排序,
具体请参考下方链接文章:
https://gcdn.grapecity.com.cn/show ...

试了一下,还是会有一些行没有正确排序。
回复 使用道具 举报
balalala
注册会员   /  发表于:2021-12-9 17:11:01
地板
可以拿官网上的示例修改一下,可以复现。
sheet.bind(GC.Spread.Sheets.Events.RangeSorting, function (e, info) {
              info.compareFunction = that.sortDomain
});
sortDomain(value1, value2) {
      return value1.toString().localeCompare(value2.toString(), 'zh');
    }

1639040824(1).jpg290431517.png
1639040861(1).png897731017.png
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-12-9 18:01:54
5#
你点击官网demo右侧的下载按钮,将您测试的demo下载并上传论坛,这样有助于更快的复现此问题。
这边根据demo来实际测试下。
image.png965950622.png
回复 使用道具 举报
balalala
注册会员   /  发表于:2021-12-10 09:18:14
6#
Lynn.Dou 发表于 2021-12-9 18:01
你点击官网demo右侧的下载按钮,将您测试的demo下载并上传论坛,这样有助于更快的复现此问题。
这边根据de ...

features_filters_filter-dialog_JavaScript.zip (4.42 KB, 下载次数: 275)
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-12-10 10:44:38
7#

这边测试您提供的demo,升序排序时显示如下图,中文排序结果是正确的。
请问您指的“还是会有一些行没有正确排序”具体是什么呢?
请详细指出问题,并说明您期待的效果。
注:中文排序是按拼音进行排序的。

image.png366959533.png
回复 使用道具 举报
balalala
注册会员   /  发表于:2021-12-10 13:30:51
8#
Lynn.Dou 发表于 2021-12-10 10:44
这边测试您提供的demo,升序排序时显示如下图,中文排序结果是正确的。
请问您指的“还是会有一些行没有 ...

只保留上面5行数据.下面的数据在表格中选中,delete清空,再次排序,排序方法不生效。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-12-10 15:15:29
9#
本帖最后由 Lynn.Dou 于 2021-12-14 16:52 编辑

经调研原因是删除数据后,value 值为null,无法进行比较。
需要进一步调研值为null时的处理机制,待有进展会在贴中更新,
本贴先做保留处理。(SJS-11242)
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-12-14 16:52:21
10#
请将 sortDomain 方法中的代码修改如下:
  1. function sortDomain(value1, value2) {
  2.             console.log(value1, '---------', value2)
  3.             console.log(isAscending);

  4.             if(value1 && value2) {
  5.                 return value1.toString().localeCompare(value2.toString(), 'zh');
  6.             } else if(!value1 && !value2) {
  7.                 return 0;
  8.             } else if(value1 && !value2) {
  9.                 return isAscending?-1:1;
  10.             } else if(!value1 && value2) {
  11.                 return isAscending? 1:-1;
  12.             }
  13.         }
复制代码


完整代码请参考附件demo。

中文排序.zip

2.48 KB, 下载次数: 255

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部