我将Dojo Datagrid绑定到启用了ClientFilter的JsonRestStore。 我想要的行为:
每次我在DataGrid上调用filter时,商店都应该执行 在本地查询并更新网格。同时它也应该发送 对服务器的相同查询,将其接收的数据添加到客户端 过滤数据。
ClientFilter的文档似乎说这是它应该如何工作的。 这是我得到的行为:
根据数据网格,数据网格从服务器加载一次数据 初始过滤器设置。任何进一步调用datagrid.filter 过滤客户端上的数据。没有更多的XHR调用服务器了 发送。
我花了几个小时调试ClientFilter.js寻找bug但找不到它。我做错了什么?
编辑:我想把它放在这里,所以希望找到类似信息的人也不会被卡住。 ClientFilter和JsonRestStore存在已知问题。 与互联网上的所有旧文档混淆,我使用的是dojo.data.JsonRestStore 这是一个旧的,不受支持的(?)商店。 Dojo现在已经转移到新的ObjectStore API。 实现此新API的最近存储是dojo.store.JsonRest,ClientFilter功能由dojo.store.Cache提供答案 0 :(得分:1)
可悲的是,在dojox.data.JsonRestStore中,所有已缓存的内容都会被缓存,据我所知,您无法刷新Item或查询。您可以尝试clearCache(),如果您轻松地依赖缓存,它可能会起作用。 否则,您将不得不深入了解JRS以根据您的需要实现真正的clearCache。 为了实现类似于您需要的东西,您可能连接过滤器,并在商店上发出相同的查询,并添加一个较小的附加内容,例如“& date =”+(new Date()。toString( )) 或类似的东西强制刷新...... 不确定它会完全解决你的问题,除了快速加载第一个过滤器之外,它会破坏你的缓存的目的。 我甚至不确定强制查询会更新你的数据网格......但你可以尝试一下。