Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
mirashke
0 / 0 / 1
Регистрация: 26.12.2014
Сообщений: 15
1

Фильтрация данных и пагинация

24.02.2018, 11:56. Просмотров 578. Ответов 3
Метки нет (Все метки)

Добрый день!
Столкнулся с проблемой фильтрации данных и пагинацией второй день бьюсь и что-то без толку
Проблема в следующем
Есть метод примерно следующего содержания
C#
1
2
3
4
5
6
7
8
9
10
11
12
public ActionResult IndexSearch(int? page, Filter filter)
        {
           
            var business = new BL.BusinessLogic();
            var products = business.GetProduct(filter);
            var model = new IndexSearchViewModel();
            int pageSize = 3;
            int pageNumber = (page ?? 1);
            model.Products = products.ToPagedList(pageNumber, pageSize);
            return View(model);
 
        }
Есть представление в которой есть форма с необходимыми полями для фильтрации данных и кнопкой submit
чуть ниже идут продукты с пагинацией.

Когда заполняешь форму и нажимаешь submit фильтра отлично отрабатывает. в представление выводятся только те продукты которые попали под условия, но когда переходишь на вторую страницу то фильтр не сохраняется, и выводится вторая страница из всех продуктов, а не вторая страница отфильтрованных.

Вопрос как реализовать фильтрацию с пагинацией?
Читал https://docs.microsoft.com/ru-ru/asp...vc-application
Но здесь поле search и currentFilter типа string, у меня же модель типа Filter и передать как currentFilter = model.CurrentFilter не получиться.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2018, 11:56
Ответы с готовыми решениями:

Фильтрация данных по периоду
Привет.Подскажите пожалуйста как можно реализовать фильтрацию данных по...

Фильтрация данных в таблице
Есть таблица с данными, где выводится информация о заявках: аудитория, вид...

Фильтрация данных в Access
Здравствуйте. Столкнулся с такой проблемой: работаю в Дримвивере, поэтому в...

Фильтрация и изменение данных в БД
Посмотрел разные темы, но вопрос редактирования чет не видел. У меня есть БД...

Динамическая пагинация
Простое ASР MVC приложение. Как реализовать перенос таблицы по страницам если...

3
lvlkoo
.NET C#,ASP.NET MVC
Эксперт .NET
535 / 460 / 209
Регистрация: 16.10.2010
Сообщений: 1,841
Завершенные тесты: 2
24.02.2018, 17:01 2
Сохранять фильтр можете либо в сессии, либо на в смой вью с помощью input type="hidden"
0
mirashke
0 / 0 / 1
Регистрация: 26.12.2014
Сообщений: 15
26.02.2018, 19:37  [ТС] 3
В сессии? а разве так кто-то делает? при перезаходе на страницу фильтр останется ведь. Не понял как это можно реализовать с помощью input hidden можете разъяснить поподробнее?
Пока мое решение такое

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public ActionResult IndexSearch(int? page, string param1, string param2, string param3)
        {
            Filter filter = new Filter();
            filter.Param1 = param1;
            filter.Param2 = param2;
            filter.Param3 = param3;
           
            var business = new BL.BusinessLogic();
            var products = business.GetProduct(filter);
            var model = new IndexSearchViewModel();
            model.CurrentFilter = filter;
            int pageSize = 3;
            int pageNumber = (page ?? 1);
            model.Products = products.ToPagedList(pageNumber, pageSize);
            return View(model);
 
        }
в представлении

C#
1
2
3
4
5
6
7
8
9
10
11
 Страница @(Model.Products.PageCount < Model.Products.PageNumber ? 0 : Model.ProductsPageNumber) из @Model.Products.PageCount
 
        @Html.PagedListPager(Model.Products, page => Url.Action("IndexSearch", new
{
    page,
    param1 = Model.CurrentFilter.Param1,
    param2 = Model.CurrentFilter.Param2,
    param3 = Model.CurrentFilter.Param3
 
 
}))
Здесь ведь много разработчиков, как вы решаете данные задачи, поделитесь опытом
0
_exp10der_
Warrior
490 / 417 / 177
Регистрация: 23.11.2014
Сообщений: 932
28.02.2018, 00:42 4
mirashke, ваш объект фильтр ну или как вы у себя будите его на бекенде интерпретировать, должен собираться на основе query string в url. Это например позволит поделиться адресом с другим пользователем.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2018, 00:42

Пагинация не выводит ничего
С наступающим Всех! Пагинация не выводит ничего ,только пустая страница никаких...

Ajax пагинация как в вк
Здравствуйте! Подскажите пожалуйста как можно сделать ajax пагинацию как в вк,...

Пагинация, добавление кнопок
Необходимо добавить кнопки перехода между страницами, если делать это в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru