Подтвердить что ты не робот

Ручная настройка GridView PageCount, когда DataSource не возвращает полный набор результатов?

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

Я выяснил все, кроме как получить свойство GridView PageCount для работы с нашими веб-службами. В настоящее время наши веб-службы возвращают общее количество записей, как показано ниже:

public object[] GetStuffMethod(int pageNum, int recordsPerPage, out int totalRecords)

Это отлично работает с GridView, однако найденная документация говорит о том, что свойство GrideView PageCount генерируется из общих записей в DataSource. Не существует ли способа установить параметр PageCount на основе чего-то другого, кроме как вернуть все записи?

В моем источнике данных могут быть десятки тысяч записей, поэтому я бы не выбрал их всех, чтобы сделать счет страницы GridView. Я, вероятно, мог просто игнорировать счет страницы GridView и вычислять ее самостоятельно, но если у рамки есть способ сделать это, я бы предпочел использовать ее.

4b9b3361

Ответ 1

Я настоятельно рекомендую вам перейти по пути ObjectDataSource.

Если вы не знакомы с этим подходом, вот основные сведения:

1) Вместо того, чтобы вручную задавать свойство grid.DataSource в коде позади, вы добавляете дополнительный элемент на страницу. Вы устанавливаете для DataSourceID сетки идентификатор вашего объекта ObjectDataSource.

2) Здесь вы получаете реальный контроль. Вы создаете новый класс и предоставляете ему две функции: "SelectRows()" и "GetCount()". Вы можете поместить свою логику в обе функции и оптимизировать свое сердце. Не стесняйтесь использовать веб-службы, если это то, что вам нужно для работы, но при этом методе вы можете вызвать его, чтобы возвращать строки и другие, чтобы возвращать счет.

3) используйте редактор свойств ObjectDataSource, чтобы подключить его к вашему классу и включить пейджинг. Вы все настроены!

Я настоятельно рекомендую вам проверить Пример кода Пример использования ObjectDataSource и GridView, так как это явно предназначен для поддержки того, что вы хотите.

Удачи!

Ответ 2

Вы должны установить AllowCustomPaging = "true". И когда привязка данных:

mygrid.VirtualItemCount = totalRecords;
mygrid.DataSource = mysource;
mygrid.DataBind();

Обновление 1: Выше только для данных. К сожалению, единственный поддерживаемый способ создания подкачки на стороне сервера с помощью gridview - это реализовать объект-источник данных или реализовать собственный источник данных. Вот связанный msdn doc http://msdn.microsoft.com/en-us/library/5aw1xfh3.aspx.

Обновление 2: Этот метод теперь работает с GridView с .Net 4.5