2012-02-03 4 views
1

Мы используем Sencha Ext JS 4 для нашего приложения LOB. На сервере мы используем службы MS RIA (Data Domain Services) с конечной точкой JSON. В общем, все работает нормально. Но подкачки нет. первую очередь мы обнаружили, что запрос JSON URL были ключевые слова, которые РИА просто игнорировали (состояние, страница и т.д.) после некоторых исследований я обнаружил, что я могу использовать следующий синтаксис:RIA Services JSON и Ext.Js

Для примера:

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 Service вернет правильный TotalCount (если нет $ skip или $ take - RIA Service отсылает всю таблицу и правильно определяет TotalCount).

ответ

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 магазина.

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