MVC3 подкачки и сортировки без сетки? - PullRequest
0 голосов
/ 26 июля 2011

Мне было интересно, возможно ли реализовать разбиение на страницы и сортировку данных с использованием синтаксиса @foreach Razor вместо использования конкретного элемента управления Grid.

Было бы сложно реализовать? Стоит ли вместо этого придерживаться существующих Grid-решений, таких как WebGrid или MVCContrib grid?

Ответы [ 4 ]

2 голосов
/ 26 июля 2011

Я написал метод расширения для pagin моих списков:

public static class DataPager
    {
        public static IEnumerable<T> PageData<T>(this IEnumerable<T> source, int currentPage, int pageSize)
        {
            var sourceCopy = source.ToList();

            if (sourceCopy.Count() < pageSize)
            {
                return sourceCopy;
            }

            return sourceCopy.Skip((currentPage - 1) * pageSize).Take(pageSize);
        }
    }

Может быть полезным для вас, например

    var courses = List<Courses>(); // Get courses somehow...

    int currentPage = 2;
    int pageSize = 5;

var pagedCourses = courses.OrderBy(c => c.Course.Title).PageData(currentPage, pageSize);
2 голосов
/ 06 августа 2011

Важное примечание к ответу Джейсона.

Вы не должны использовать метод ToList, так как он отрицательно повлияет на потребление памяти и общую производительность.

Вы также должны проверить, действительно ли объект IEnumerable является IQueryable, и привестипоследний тип перед использованием методов расширения Skip and Take.Это гарантирует, что провайдер запросов позаботится о создании соответствующего sql для выбора из базы данных, вместо того, чтобы перебирать все записи.

1 голос
/ 09 ноября 2011

Я не думаю, что OP запрашивает код на стороне сервера. Вы можете использовать tableorter для сортировки. Что касается подкачки, я бы предложил добавить номер страницы в URL и ограничить ваши данные на стороне сервера.

1 голос
/ 26 июля 2011

Если вы используете LINQ, то вы можете использовать OrderBy и ThenBy методы для сортировки и Skip и Take методы для подкачки.Если вы сделаете это в своем хранилище или Controller на IQueryable, вы можете убедиться, что только необходимые данные извлекаются, а не извлекаются все, а затем сортируются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...