【发布时间】:2012-02-16 10:38:33
【问题描述】:
我有一个绑定到启用了 ClientFilter 的 JsonRestStore 的 Dojo Datagrid。 我想要的行为:
每次我在 DataGrid 上调用过滤器时,商店都应该执行 在本地查询并更新网格。同时它还应该发送 对服务器进行相同的查询,将接收到的数据添加到客户端 过滤数据。
ClientFilter 的文档似乎说这是它应该如何工作的。 这是我得到的行为:
数据网格从服务器加载一次数据,根据 初始过滤器设置。仅对 datagrid.filter 的任何进一步调用 过滤客户端上的数据。不再有对服务器的 XHR 调用 已发送。
我花了几个小时调试 ClientFilter.js 来寻找错误但找不到。我做错了什么?
编辑:我想把它放在这里,希望寻找类似信息的人也不会陷入困境。 ClientFilter 和 JsonRestStore 存在已知问题。 对互联网上的所有旧文档感到困惑,我使用的是 dojo.data.JsonRestStore 这是一个旧且不受支持的(?)商店。 Dojo 现在已移至新的 ObjectStore API。 实现这个新 API 的最近的商店是 dojo.store.JsonRest,而 ClientFilter 功能由 dojo.store.Cache 提供
【问题讨论】:
-
我想要的是,假设我正在根据创建日期进行过滤。如果我减少过滤器,它应该在客户端过滤并给我,但如果我增加过滤器的范围,它应该从服务器获得更多结果。这不是相当常规的事情吗?
-
再解释一下用例:我过滤两个字段 fromDate 和 toDate。最初 fromDate=2012-01-20 和 toDate=2012-01-24 。这让我从服务器获得了适当的结果。现在,如果我将 fromDate 更改为 2012-01-21,商店会过滤客户端上的数据集并显示结果。这是必需的行为。如果我从日期更改为 2012 年 1 月 19 日,预期的行为是商店向服务器请求更多数据。相反,存储只是返回它在缓存中的所有数据(不包括 19 日的数据)
标签: javascript dojo