0

我将旧版本的 dgrid (onDemandGrid) 与 dojo JsonRestStore 一起使用。

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

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

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

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

dgrid/dstore. 有类似的可能吗?过滤似乎不是一种选择,据我所知,这只是在客户端,我无法加载我的所有数据。我需要一些动态参数来过滤服务器上的数据。

4

1 回答 1

4

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

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

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过滤。

于 2015-05-14T20:26:32.267 回答