找回密码
 立即注册

QQ登录

只需一步,快速开始

nataliama

注册会员

21

主题

68

帖子

185

积分

注册会员

积分
185

[已处理] 数据过滤问题

nataliama
注册会员   /  发表于:2021-6-21 10:43  /   查看:6063  /  回复:21
1金币
本帖最后由 nataliama 于 2021-6-23 13:52 编辑

设置了rowFilter,想要把不符合的行全部隐藏要怎么设置
2.PNG

21 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-6-21 10:56:26
沙发
您可以将TextCompareType改为GC.Spread.Sheets.ConditionalFormatting.TextCompareType.notEqualsTo
回复 使用道具 举报
nataliama
注册会员   /  发表于:2021-6-21 10:57:33
板凳
Derrick.Jiao 发表于 2021-6-21 10:56
您可以将TextCompareType改为GC.Spread.Sheets.ConditionalFormatting.TextCompareType.notEqualsTo

然后怎么设置隐藏呢
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-6-21 11:08:08
地板
nataliama 发表于 2021-6-21 10:57
然后怎么设置隐藏呢

参考下面的代码,不符合条件的就会被隐藏
  1. sheet.setValue(0,0,1);
  2. sheet.setValue(1,0,2);
  3. sheet.setValue(2,0,3);
  4. var range = new GC.Spread.Sheets.Range(-1, 0, -1, 1);
  5.     sheet.rowFilter(new GC.Spread.Sheets.Filter.HideRowFilter(range));
  6.     var compareType = GC.Spread.Sheets.ConditionalFormatting.TextCompareType.notEqualsTo;
  7.     var condition = new GC.Spread.Sheets.ConditionalFormatting.Condition(GC.Spread.Sheets.ConditionalFormatting.ConditionType.textCondition, {compareType: compareType, expected: '3'});
  8.     var rowfilter = sheet.rowFilter();
  9.     rowfilter.addFilterItem(0, condition);
  10.     rowfilter.filter(0);
复制代码

image.png953654174.png

回复 使用道具 举报
nataliama
注册会员   /  发表于:2021-6-21 11:16:39
5#
Derrick.Jiao 发表于 2021-6-21 11:08
参考下面的代码,不符合条件的就会被隐藏

HideRowFilter一定要设置range吗,我的行数是不确定的,是要先拿到sheet目前的行数吗
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-6-21 11:32:46
6#
nataliama 发表于 2021-6-21 11:16
HideRowFilter一定要设置range吗,我的行数是不确定的,是要先拿到sheet目前的行数吗

对的,这个筛选是作用在指定的range里面
回复 使用道具 举报
nataliama
注册会员   /  发表于:2021-6-22 11:02:48
7#
Derrick.Jiao 发表于 2021-6-21 11:32
对的,这个筛选是作用在指定的range里面

我这样设置还是不生效,我需要第二列=我指定值的,才显示出来 3.PNG
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-6-22 11:12:11
8#
nataliama 发表于 2021-6-22 11:02
我这样设置还是不生效,我需要第二列=我指定值的,才显示出来

如果是要等于某个值才显示的话就用equalsTo,例如这个例子,我在B列设置了1、2、3,设置了筛选等于3,然后筛选后就只剩下3。如果仍未解决您的问题,建议您将您的demo上传,这边调研一下。sheet.setValue(0,1,1);
sheet.setValue(1,1,2);
sheet.setValue(2,1,3);

var range = new GC.Spread.Sheets.Range(-1, 1, -1, 1);
    sheet.rowFilter(new GC.Spread.Sheets.Filter.HideRowFilter(range));
    var compareType = GC.Spread.Sheets.ConditionalFormatting.TextCompareType.equalsTo;
    var condition = new GC.Spread.Sheets.ConditionalFormatting.Condition(GC.Spread.Sheets.ConditionalFormatting.ConditionType.textCondition, {compareType: compareType, expected: '3'});
    var rowfilter = sheet.rowFilter();
    rowfilter.addFilterItem(1, condition);
    rowfilter.filter(1);


image.png206622313.png

回复 使用道具 举报
nataliama
注册会员   /  发表于:2021-6-22 11:16:31
9#
Derrick.Jiao 发表于 2021-6-22 11:12
如果是要等于某个值才显示的话就用equalsTo,例如这个例子,我在B列设置了1、2、3,设置了筛选等于3,然 ...

range的四个参数到底要怎么设置,感觉我的range设的不对
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-6-22 11:29:54
10#
nataliama 发表于 2021-6-22 11:16
range的四个参数到底要怎么设置,感觉我的range设的不对

您可以看下api  row和col是区域的起始行列索引,rowCount、colCount是区域的行列数。单元格区域 如果row为-1并且rowCount为-1,则区域表示列。例如,sheet.getRange(-1,4,-1,6)返回列"E:J"。 如果col为-1并且colCount为-1,则区域表示行。例如,sheet.getRange(4,-1,6,-1)返回行"5:10"。
image.png690383300.png
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部