jqgrid paging linq с командами пропуска / принятия - PullRequest
0 голосов
/ 05 марта 2012

Может кто-нибудь сказать мне, возможно ли то, что я хочу сделать (asp.net 4)

Хорошо, у меня есть объект businesslogic, который называется CityBusinessObject. у него есть открытый метод GetCities () Это делает кучу магии, используя EF и Linq, и возвращает список городских объектов в публичную собственность. Я связываю это с моим JQgrid, устанавливая источник данных для свойства, и это работает потрясающе. Я могу получить его на странице также (10 записей одновременно)

но это на стороне клиента, и не очень эффективно.

Я бы предпочел иметь открытый метод GetCitiesbyPage (int skip, int take), который затем вызывается всякий раз, когда сетка делает страницу.

мой вопрос 1. как мне заставить сетку вызывать мой метод GetCitiesbyPage со значениями для пропуска и принятия 2. Как я могу заставить сетку все время знать обо всех других страницах без хранения данных. т.е. skip (0) .take (10) будет эффективно содержать только 10 строк, поэтому сетка «знает» только о 10 строках, поэтому 1 страница

1 Ответ

2 голосов
/ 05 марта 2012

Если вы используете jqGrid с параметрами url: "Url.Action("GetCitiesbyPage")" и datatype: 'json', поведение jqGrid по умолчанию почти такое же, как вы хотите (см. документацию ).jqGrid отправляет на url дополнительные параметры string sidx, string sord, int page, int rows.Поэтому вы должны использовать rows как take параметр и page-1 как skip.Чтобы предоставить jqGrid информацию об общем количестве страниц и общем количестве или записях (элементах), формат данных по умолчанию, возвращаемых действием контроллера, должен быть

{
    "total": 2,
    "page": 1,
    "records": 12,
    "rows": [
        ... the 10 rows of data
    ]
}

, и вы увидите что-то вродеследующий

enter image description here

См. ответ для получения дополнительной информации.В ответе или этом вы можете загрузить демонстрационный проект , который показывает, как реализовать пейджинг на стороне сервера с EF.

...