RIA Services JSON и Ext.Js - PullRequest
       23

RIA Services JSON и Ext.Js

1 голос
/ 04 февраля 2012

Мы используем Sencha Ext JS 4 для нашего LOB-приложения.На сервере мы используем службы MS RIA (Data Domain Services) с конечной точкой JSON.В общем все работает ок. Но подкачки нет.Прежде всего, мы обнаружили, что в URL-адресе запроса JSON есть ключевые слова, которые 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 ]

1 голос
/ 04 февраля 2012

Извините, я не знаю много о технологии, которую вы используете на стороне сервера.Я использую 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 магазина.

Удачи.Дмитрий.

0 голосов
/ 04 февраля 2012

Посмотрите на опцию inlinecount:

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

...