Dojo JsonRestStore和ClientFilter从不从服务器更新

Dojo JsonRestStore and ClientFilter never updates from server

本文关键字:更新 服务器 ClientFilter JsonRestStore Dojo      更新时间:2023-09-26

我有一个Dojo Datagrid绑定到启用了ClientFilter的JsonRestStore。我想要的行为:

每次我在DataGrid上调用filter时,存储都应该执行本地查询并更新网格。同时,它还应该发送将相同的查询添加到服务器,并将其接收到的数据添加到客户端过滤后的数据。

ClientFilter的文档似乎说这就是它应该如何工作的。这就是我的行为:

根据初始过滤器设置。仅对datagrid.filter的任何进一步调用过滤客户端上的数据。不再对服务器进行XHR调用已发送。

我花了几个小时调试ClientFilter.js来查找错误,但找不到。我做错了什么?

编辑:我想把这个放在这里,希望寻找类似信息的人不会陷入困境。ClientFilter和JsonRestStore存在已知问题。由于混淆了互联网上所有的旧文档,我使用的是dojo.data.JsonRestStore这是一个旧的、不受支持的(?)存储。Dojo现在已经转移到新的ObjectStore API。实现这个新API的最近的商店是dojo.store.JsonRest,而ClientFilter功能由dojo.sstore.Cache 提供

遗憾的是,在dojox.data.JsonRestStore中,所有已缓存的内容都保持缓存状态,据我所知,您无法刷新Item或查询。您可以尝试clearCache(),如果您不太依赖缓存,它可能会起作用。否则,您将不得不深入JRS,以根据需要实现真正的clearCache。为了实现与您的需求类似的功能,可以连接过滤器,并在商店中发出相同的查询,添加一个小的附加项,如"&date="+(new date().toString())或者类似的东西来强制刷新。。。不确定它是否能完全解决您的问题,而且除了快速加载第一个过滤器外,它会有点违背缓存的目的。我甚至不确定强制查询是否会更新您的数据网格。。。但你可以试一试。