RIA Services JSON和Ext.Js.

时间:2012-02-03 21:46:02

标签: javascript json extjs service ria

我们使用Sencha Ext JS 4作为我们的LOB应用程序。在服务器上,我们使用带有JSON端点的MS RIA服务(Data Domain Services)。一般来说一切正常。但是分页不是。 首先,我们发现JSON请求URL具有RIA在一些研究后忽略的关键字(状态,页面等),我发现我可以使用以下语法:

例如:

http://localhost/Product/ServiceName.svc/JSON/GetItems?_dc=1328305056811&$take=50&$skip=50

即。 $ skip(如果你使用$ skip - 你必须在RIA方面对查询进行排序)和$ take,请求返回适当数量的记录。然而 JSON响应在开头看起来像这样:

{"GetItemsResult":{"TotalCount":-1,"RootResults":[

即。 TotalCount = -1 - 为了使分页正常工作,JS需要知道记录的总数以及我能看到这个工作的唯一方法 - 如果我查询具有单独请求的记录数,然后进行页面查询。

问题是我错过了什么吗? RIA服务可以返回正确的TotalCount(如果没有$ skip或$ take - RIA服务发回整个表并正确指定TotalCount)。

2 个答案:

答案 0 :(得分:1)

对不起,我对您在服务器端使用的技术了解不多。我正在使用Grails并且不能更快乐。所以我无法帮助你计算总数。

然而,对于分页参数,ExtJS允许将其期望发送/接收的内容转换为服务器端所期望的内容。像这样:

proxy:{
    type: 'ajax',
    url: 'request/my.json',
    //override default param names
    startParam : "offset",
    limitParam :"max",
    sortParam : "sort",
    simpleSortMode:true,//required for directionParam to be used
    directionParam : "order",
    reader: {
        type: 'json',
        root: 'data'
    },

另一个想法:如果你不能让你的服务器端发送总计数,那么在商店上创建一个监听器并在加载时手动计算记录并将其设置为商店的totalCOunt属性。

祝你好运。 梅德。

答案 1 :(得分:0)