Использование DataPager без извлечения всех строк по каждому запросу

StackOverflow https://stackoverflow.com/questions/429707

  •  06-07-2019
  •  | 
  •  

Вопрос

У меня есть ListView, который я привязываю к коллекции объектов примерно так:

int total;
List<Client> clientList = 
    clientData.GetClients(criteria, pageNum, pageSize, out total);
uxClientList.DataSource = clientList;
uxClientList.DataBind();

Где параметры pageNum, pageSize и total упрощают разбиение на страницы на уровне доступа к данным. Пока все хорошо.

Теперь я могу добавить DataPager на страницу, указать его на ListView и получить приличный UX для пейджинга. Есть немного больше, когда вы связываете программно, а не декларативно с помощью элемента управления источником данных , но проблема здесь в том, что DataPager ожидает, что каждый раз будет получаться весь набор результатов, из которого он должен вычислять нумерация страниц, поэтому он видит одну страницу результатов, возвращенную как общее количество доступных записей, и отображается так, как если бы была доступна только одна страница результатов. Другими словами, приведенный выше сценарий прекрасно работает с DataPager, если мы переключаемся на версию GetClients без пейджинга:

List<Client> clientList = clientData.GetClients(criteria);
uxClientList.DataSource = clientList;
uxClientList.DataBind();

Очевидно, что наш уровень доступа к данным достаточно любезен, чтобы предоставить нам метод одновременного извлечения страницы, поэтому предпочтительнее извлекать все записи каждый раз. Было бы неплохо, если бы мы могли явно информировать DataPager об общем количестве доступных записей, чтобы он все еще мог автоматически создавать выходные данные разбивки на страницы, но для этого требовалась только одна страница за раз.

Я не нашел простой способ сделать это, и я ничего не нашел в поисках. По общему признанию, в настоящее время я не обладаю глубоким пониманием реализации DataPager, поэтому, надеюсь, я что-то упустил.

Это было полезно?

Решение

Вы ничего не пропустили.

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

По моему опыту < < л &; GT &; GT &; ГТ &; достаточно. В любом случае, никто не проходит мимо 3-й страницы.

Другие советы

Посмотрите на ListViewPagedDataSource и его свойство AllowServerPaging , я думаю, что может быть тем, что вы ищете ..

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top