找回密码
 立即注册

QQ登录

只需一步,快速开始

EplanningSoft

初级会员

15

主题

73

帖子

210

积分

初级会员

积分
210
EplanningSoft
初级会员   /  发表于:2020-7-15 11:35  /   查看:6919  /  回复:10
1金币
V9版本spreadjs实现筛选,点击筛选按钮,筛选框弹不出来
image.png504818725.png

筛选测试代码如下:
                    var sheet = GcSpread.getActiveSheet();
                    var sels = sheet.getSelections();
                    if (sels.length == 0) return;
                    var sel = sels[0];
                    // set filter
                    var _drf = new GcSpread.Sheets.HideRowFilter(sel);
                    sheet.rowFilter(_drf);
                    var condtionbase = new GcSpread.Sheets.ConditionalBase(GcSpread.Sheets.ConditionType.TextCondition, {
                        compareType: "EqualsTo",
                        expected: "",
                        formula: null
                    });

                    _drf.addFilterItem(sheet.getActiveColumnIndex(), condtionbase);
                  
                    sheet.invalidateLayout();
                    sheet.repaint();


image.png164929198.png

最佳答案

查看完整内容

保护时候可以设置protectionOption允许筛选 http://help.grapecity.com/spread/SpreadJSWeb/webframe.html#JavascriptLibrary~GcSpread.Sheets.Sheet~protectionOption.html

10 个回复

正序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-7-15 18:17:24
11#
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-7-15 16:43:57
10#
dexteryao 发表于 2020-7-15 16:25
保护时候可以设置protectionOption允许筛选
http://help.grapecity.com/spread/SpreadJSWeb/webframe.html ...

增加这个设置就好了  sheet.protectionOption().allowFilter = true;

非常感谢!
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-7-15 16:23:08
8#
dexteryao 发表于 2020-7-15 13:53
用您的代码在9.40.20161.7未重现问题。给个完整Demo吧
发现个问题,
     var sheet = GcSpread.getActiv ...

sheet.setIsProtected(true)这个方法不能去掉,否则就无法控制不可编辑单元格,我们设计的模板就不起作用了,有没有什么解决方法,能保留setIsProtected的同时,还能让筛选弹出框显示出来?
这个功能比较紧急,烦请尽快回复一下吧
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-7-15 16:10:02
7#
dexteryao 发表于 2020-7-15 13:53
用您的代码在9.40.20161.7未重现问题。给个完整Demo吧
发现个问题,
     var sheet = GcSpread.getActiv ...

我这边通过删除这几个方法,测试出来,是这个保护的方法引起的,把它去掉,就弹出来了
sheet.setIsProtected(true);
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-7-15 15:58:25
6#
dexteryao 发表于 2020-7-15 14:30
附件是不是上传错了,是一个json,里面没有需要筛选的表格。

这是个完整的有数据的报表json

我这边测试发现,只加载报表固定样式,是可以弹出筛选框的,
一旦做完一系列的数据解析,就弹不出来了
我的数据解析中,需要重算表格,所以有用到以下这些方法,请问是哪个方法影响了吗?
    sheet.resumeCalcService()
    Sheet.recalcAll()
    sheet.SetPaintCalcServiceState(true);
    sheet.setIsProtected(true);

json.zip

23 KB, 下载次数: 392

回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-7-15 14:41:08
5#
dexteryao 发表于 2020-7-15 14:30
附件是不是上传错了,是一个json,里面没有需要筛选的表格。

我微信私发你了一个完整的报表,麻烦你看下,能重现不
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-7-15 14:30:40
4#
附件是不是上传错了,是一个json,里面没有需要筛选的表格。
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-7-15 14:20:40
3#
dexteryao 发表于 2020-7-15 13:53
用您的代码在9.40.20161.7未重现问题。给个完整Demo吧
发现个问题,
     var sheet = GcSpread.getActiv ...

GcSpread是我贴代码时随意改的名字

我刚才无意间发现有个加载出错的报表,筛选功能可以用,不知道是不是有什么设置,给影响了。
是不是有哪个会屏蔽掉筛选框?


json.zip

41.29 KB, 下载次数: 445

回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-7-15 13:53:57
2#
本帖最后由 dexteryao 于 2020-7-15 14:23 编辑

用您的代码在9.40.20161.7未重现问题。给个完整Demo吧
发现个问题,
     var sheet = GcSpread.getActiveSheet();

spread对象 “GcSpread” 和命名空间 GcSpread一样?
回复 使用道具 举报
最佳答案
最佳答案
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-7-15 11:35:15
来自 9#
保护时候可以设置protectionOption允许筛选
http://help.grapecity.com/spread ... otectionOption.html
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部