Пейджинг и сортировка сеток с помощью ASP.Net MVC - PullRequest
52 голосов
/ 30 января 2009

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

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

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

Ответы [ 5 ]

38 голосов
/ 18 марта 2011

в настоящее время MVC 3 теперь имеет веб-сетку из коробки. Я знаю, что этот вопрос давно задан, но я остановился на нем, когда искал что-то о 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 вокруг.

29 голосов
/ 31 января 2009

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

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

3 голосов
/ 30 января 2009

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

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

2 голосов
/ 31 января 2009

Первое использование jQuery . JQuery твой друг. Тогда используйте этот удивительный и, вероятно, лучший элемент управления Grid для jQuery jqGrid .

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

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

0 голосов
/ 23 февраля 2015

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

...