RIA Services JSON and Ext.Js

RIA Services JSON and Ext.Js

本文关键字:Ext Js and JSON Services RIA      更新时间:2023-09-26

我们的LOB应用程序使用Sencha Ext JS 4。在服务器上,我们使用带有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)。

很抱歉,我对您在服务器端使用的技术了解不多。我正在使用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属性中。

祝你好运。德米特里。

查看inlinecount选项:

http://msdn.microsoft.com/en-us/library/dd942040(v=prot.10).aspx