dgrid / dstore / Rest - 如何向请求添加额外的查询参数

dgrid / dstore / Rest - How to add additional query parameters to request

我使用了旧版本的 dgrid (onDemandGrid) 和 dojo JsonRestStore。

我的网页有一些输入字段(例如日期、姓名等)。更改这些字段之一后,我更改了网格的查询:

grid.setQuery({y: 年, m: 月, l: name1, d: flag, e: name2});

并且 Json 请求类似于 ?y=2015&m=5&l=test1&....

我了解到,对于实际版本的 dgrid,这不再可能了。

dgrid/dstore 是否可以做类似的事情? 过滤似乎不是一个选项,据我所知这只是在客户端,我无法加载我的所有数据。我需要的是一些动态参数来过滤服务器上的数据。

dstore 等同于 dojo/store/JsonRest 的是 dstore/Rest(但是,如果您在服务器上没有兼容的 REST API,您可能需要使用 dstore/Request) .

dstore 的filter 方法允许您进行任意查询。它 returns 一个集合,其中存储了任何应用的过滤器,以便在调用 fetchfetchRange 时可以包含它们。

var store = new Request({ target: '/path/to/service' });
var filteredCollection = store.filter({ y: 2015, m: 5 });
filteredCollection.fetch();

将导致以下 HTTP 请求:

/path/to/service?y=2015&m=5

要在 dgrid 0.4 中使用此功能,您可以将过滤后的集合分配给网格实例(并且 dgrid 将根据需要处理调用 fetch/fetchRange):

grid.set('collection', store.filter({y: year, m: month}));

dgrid 0.4 和 dstore 引入了网格与存储交互方式的重大转变。在 dgrid 0.3 中,网格在管理存储的查询状态方面发挥了更积极的作用——在 dgrid 0.4 中,情况不再如此(因此删除了 setQuery 方法)。在 dgrid 0.4 中,由网格外部的代码来实现与过滤存储数据相关的逻辑。而在 dgrid 0.3 中,您通常一次设置网格的 store 属性 并在需要过滤数据时调用 setQuery,而在 dgrid 0.4 中,您设置 collection 属性 任何时候需要更新过滤。 dstore 的 Request 商店允许您为 rangesort 过滤配置参数名称。