Пейджинг и сортировка сеток с ASP.Net MVC

Я новичок в MVC и не слежу за тем, как выполнять разбиение по страницам и сортировку в сетке. Я привык использовать элемент управления asp.Net GridView с ObjectDataSource, указывающим на объекты в нашем бизнес-уровне - и в этом случае ODS обрабатывает всю подкачку и сортировку, используя методы, которые наша ORM создает для объектов.

Я посмотрел на использование того же ORM с MVC - и там все работает нормально - я просто перебираю коллекции, чтобы построить таблицу на странице, - но без ODS для обработки разбивки на страницы и сортировки я не понимаю, как как бы я с этим справился. Был бы у меня отдельный контроллер для разбиения по страницам и сортировки?

Я понимаю, что мне нужно кататься самостоятельно, но с чего мне начать? Я создал CustomerController и представление, которое отображает таблицу клиентов, как показано ниже, и я хочу отсортировать по столбцам FirstName или LastName. В моей модели есть метод Sort (), который принимает строковое выражение сортировки в формате, который будет использоваться парой GridView / ODS. Могу ли я создать в своем CustomerController новое действие под названием Sort и поместить ActionLink в свой заголовок?

    <table>
    <tr>
        <th>
            First Name
        </th>
        <th>
            Last Name
        </th>
    </tr>
    <% foreach (var item in Model)
       { %>
    <tr>
        <td>
            <%= Html.Encode(item.FirstName) %>
        </td>
        <td>
            <%= Html.Encode(item.LastName) %>
        </td>
    </tr>
    <% } %>
</table>

person Scott Ivey    schedule 30.01.2009    source источник


Ответы (5)


Вы можете использовать тот же контроллер, просто добавьте дополнительный параметр и назовите его sort. Затем проверьте в контроллере, какое значение имеет сортировка, и отсортируйте данные на основе этого параметра.

Или, если вы хотите что-то делать на стороне клиента, вы можете использовать что-то вроде tablesorter, плагина для jquery.

person Morph    schedule 30.01.2009

в настоящее время MVC 3 теперь имеет webGrid из коробки. Я знаю, что этот вопрос был задан некоторое время назад, но я остановился на нем, когда искал что-то о webGrid. Поэтому я подумал, что у него должен быть ответ, в котором упоминается новый webGrid.

Вот несколько хороших сообщений о том, как его использовать:

http://www.dotnetcurry.com/ShowArticle.aspx?ID=615

http://cnug.co.in/blogs/shijuv/archive/2010/10/08/using-the-webgrid-helper-in-asp-net-mvc-3-beta.aspx < / а>

http://www.nickharris.net/tag/webgrid/

Он поддерживает сортировку, разбиение на страницы, а также некоторые вещи Ajax. Это уже может сделать для вас многое, но вы также можете указать каждый столбец отдельно.

Обновление:
Также доступно множество библиотек JavaScript, которые могут сделать таблицу за вас. Лично мне нравится использовать DataTables. Вы можете передать ему существующую таблицу HTML, сгенерированную на сервере, или дать ему конечную точку, откуда он может получать данные (все или только одну страницу).

Есть еще много всего, просто Google.

person Matthijs Wessels    schedule 18.03.2011
comment
Расширенные функциональные возможности, поставляется с MVC 3, прост в использовании. Любить это! - person Didaxis; 20.01.2012
comment
Вот еще один хороший пост в MSDN с более подробной информацией: msdn.microsoft.com /en-us/magazine/hh288075.aspx - person T.J.Kjaer; 13.04.2012

При использовании MVC вам как бы приходится использовать собственную сортировку, разбиение на страницы и т. Д. Я бы посоветовал YUI DataTable или некоторые другие гриды JavaScript.

Кроме того, если вы обнаружите, что выполняете тяжелую работу с сеткой данных, вы можете взглянуть на динамические данные ASP.NET, они специально разработаны для этих типов взаимодействий с ORM.

person Nick Berardi    schedule 30.01.2009
comment
В настоящий момент я иду по пути гибридных приложений MVC / Dynamic Data: материал mvc для страниц, не являющихся админскими, и DD для админских страниц. - person Merritt; 30.07.2009

Сначала используйте jQuery. jQuery - ваш друг. Затем используйте этот замечательный и, вероятно, лучший элемент управления сеткой для jQuery jqGrid.

В вашем CustomerController создайте действие под названием CustomerData. Все взаимодействия с Сеткой должны указывать на это действие.

Перейдите сюда, чтобы получить массу примеров использования jqGrid.

person Donny V.    schedule 30.01.2009
comment
jqGrid зависит от javascript. Что делать, если вам нужна независимость от JavaScript? - person Andrei Rînea; 07.02.2009
comment
Затем вам нужно будет собрать стол самостоятельно. Я создал класс подкачки и пользовательский элемент управления, который вы можете использовать, если хотите. - person Donny V.; 08.02.2009
comment
Для большинства разработчиков JavaScript - разумное требование. - person RickAndMSFT; 05.04.2013
comment
сортировка на клиенте ужасна при любых обстоятельствах. разработать хороший многоразовый код для подкачки на стороне сервера - person Northstrider; 28.08.2013

Мы использовали элемент управления JqxGrid на стороне клиента из JqWidgets и очень довольны его производительностью, связанной с огромным количеством записей вместе с пейджинг, фильтрация, встроенная сортировка. Вот пример привязки его к ASP.Net MVC

person CleanBold    schedule 23.02.2015
comment
пожалуйста, предоставьте некоторые конкретные сведения о том, как использовать эти элементы управления для исправления конкретного сценария - спасибо - person Mauricio Gracia Gutierrez; 07.01.2016