找回密码
 立即注册

QQ登录

只需一步,快速开始

程序员的苦难日子

注册会员

4

主题

15

帖子

39

积分

注册会员

积分
39
最新发帖
程序员的苦难日子
注册会员   /  发表于:2023-10-11 10:57  /   查看:1878  /  回复:7
1金币
本帖最后由 Richard.Huang 于 2023-10-12 09:38 编辑

产品:SpreadJS

如何控制筛选条件以及获取筛选按钮事件
需求图:
WechatIMG64.jpg

代码:
WechatIMG65.jpg

现在是用这段代码,把所有列都添加了筛选条件,需求是 我动态日期列和最后一列不需要筛选,
筛选只在蓝色区域前5列才有。

问题1:请问如何设置根据某些列来单独显示筛选,其他不显示
问题2:当我点击某一列进行筛选时,我需要保留筛选后的结果,点击筛选时候的事件怎么添加,如何知道筛选后得到的字段,需要保留传到后端,当我重新渲染页面时回回显这些之前筛选过的信息条件,而不是重新刷新筛选被清空

最佳答案

查看完整内容

您好,对于您的这个需求,您需要将筛选信息保存下来,无论是保存在浏览器也好还是保存到后端也好,刷新页面时,您将这个筛选信息拿过来并同步就行了 示例: sheet.rowFilter().addFilterItem(0,filterItem); 您可以参考附件Demo,将工作簿ss的筛选信息同步到工作簿ss1

7 个回复

倒序浏览
最佳答案
最佳答案
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-10-11 10:57:29
来自 4#
程序员的苦难日子 发表于 2023-10-11 15:43
非常感谢,这个事件可以拿到对应值
目前还有一个问题如果为这边筛选后得到了选中的值调用接口传入后端
...

您好,对于您的这个需求,您需要将筛选信息保存下来,无论是保存在浏览器也好还是保存到后端也好,刷新页面时,您将这个筛选信息拿过来并同步就行了
示例:
sheet.rowFilter().addFilterItem(0,filterItem);

您可以参考附件Demo,将工作簿ss的筛选信息同步到工作簿ss1

同步filter.html

2.27 KB, 下载次数: 99

回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-10-11 12:02:38
2#
本帖最后由 Richard.Huang 于 2023-10-11 12:04 编辑

您好
对于您的问题1,您可以通过filterButtonVisible方法来进行隐藏,您可以参考其API:https://demo.grapecity.com.cn/sp ... filterbuttonvisible   
示例:
sheet.rowFilter().filterButtonVisible(1,false)

对于您的问题2:您可以通过监听RangeFiltered来实现,API为:https://demo.grapecity.com.cn/sp ... vents#rangefiltered
示例:
sheet.bind(GC.Spread.Sheets.Events.RangeFiltered, function (e, info) {
        alert("Col (" + info.col + ")");
});
然后获取当前筛选结果您需要自己进行设计和维护,通过isRowFilteredOut判断当前行是否被筛选掉来for循环获取当前筛选结果,API为:https://demo.grapecity.com.cn/sp ... se#isrowfilteredout
示例参考附件Demo

获取筛选结果.html

5.99 KB, 下载次数: 104

回复 使用道具 举报
程序员的苦难日子
注册会员   /  发表于:2023-10-11 15:43:13
3#
Richard.Huang 发表于 2023-10-11 12:02
您好
对于您的问题1,您可以通过filterButtonVisible方法来进行隐藏,您可以参考其API:https://demo.grap ...

非常感谢,这个事件可以拿到对应值
目前还有一个问题如果为这边筛选后得到了选中的值调用接口传入后端
刷新了列表,比如我填了一个值保存 这时候重新刷新列表后 如何回显我之前筛选过的值到filter里并且只显示筛选后到数据

比如默认数据20条,我筛选后只有2条,这时候我保存后刷新列表,后端依旧返回20条数据,但实际上我需要回显我之前筛选的条件只显示2条
回复 使用道具 举报
程序员的苦难日子
注册会员   /  发表于:2023-10-11 17:15:19
5#
Richard.Huang 发表于 2023-10-11 16:50
您好,对于您的这个需求,您需要将筛选信息保存下来,无论是保存在浏览器也好还是保存到后端也好,刷新页 ...

你好。这个同步我不太明白是什么意思

具体需求是这样

比如我筛选了 有5个列的筛选。每次筛选我都用一个数组去记录筛选的值
如图:
WechatIMG70.jpg
这5个数组,第一个数组。我筛选了 2个值   

这时候我点保存后刷新了列表数据,后端重新返回了数据,前端重新渲染后
我如何保证渲染完成后初始化到我之前筛选的数据
WechatIMG71.jpg
现在重新初始化后 自动勾选了5个值
其实我只需要勾选对应的2个值

就是如何通过这5个数组去回显到对应表头filter选项里去··
选了2个值  表头只勾选2个 这样的需求
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-10-11 17:34:59
6#
本帖最后由 Richard.Huang 于 2023-10-12 09:39 编辑
程序员的苦难日子 发表于 2023-10-11 17:15
你好。这个同步我不太明白是什么意思

具体需求是这样

您好,请问您有可供我们联系的联系方式吗,也许我们可以通过一些即使聊天工具来具体交流一下该问题
回复 使用道具 举报
程序员的苦难日子
注册会员   /  发表于:2023-10-13 11:01:47
7#
Richard.Huang 发表于 2023-10-11 17:34
您好,请问您有可供我们联系的联系方式吗,也许我们可以通过一些即使聊天工具来具体交流一下该问题

同事帮忙看了下 解决了
初始化加载
const filterConditions = sheet.rowFilter().toJSON()

之后等模块加载完后再添加这个代码就可以
if(filterConditions && filterConditions.filteredColumns) {
            sheet.rowFilter().fromJSON(filterConditions)
            sheet.rowFilter().filter()
            sheet.repaint()
        }   
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-10-13 11:21:07
8#
感谢分享,您的分享会帮助到更多和您有相同疑问的人
那么本贴就先结贴了,后续有其他问题欢迎随时开新贴提问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部