Могу ли я использовать пейджер ‹asp:dataGrid› с производительностью разбиения на страницы базы данных?

У меня есть процедура хранения, которая обрабатывает разбиение на страницы на уровне базы данных, получая @PageSize и @PageIndex. Я могу создать еще один, чтобы возвращать @PageCount, учитывая размер страницы.

Могу ли я заставить сетку данных выполнять разбиение по страницам на уровне базы данных без необходимости разрабатывать ее вне контроля, используя пейджер управления?

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


person Victor Rodrigues    schedule 10.03.2009    source источник


Ответы (2)


Установите AllowCustomPaging="true" для файла aspx. И при привязке данных выполните:

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

На основании вашего комментария «Я использую соединение ADO, команду и т. д., и после загрузки результатов в список объектов (мои классы сущностей) я создаю datagrid.DataSource = List;»

person eglasius    schedule 10.03.2009
comment
Я пытаюсь сделать это, учитывая эту ссылку: stackoverflow.com/questions/475982/ - person Victor Rodrigues; 10.03.2009
comment
что то же самое :) обратите внимание на код при загрузке страницы, вы не можете пропустить виртуальный счет - person eglasius; 10.03.2009
comment
вы также не можете пропустить AllowCustomPaging - вы имеете в виду, что пробовали это или сейчас пытаетесь? / если вы уже пробовали, еще раз внимательно просмотрите - person eglasius; 10.03.2009
comment
Кстати, просто для ясности: для вашего кода для обработки пейджинга (в вашем случае с sp) вы просто указываете текущую страницу для отображения в DataSource. - person eglasius; 10.03.2009

Если вы используете элемент управления ObjectDataSource в качестве DataSourceID для GridView, он работает без проблем. Элементы управления ObjectDataSource имеют несколько параметров, в которых вы можете указать имена свойств PageIndex и MaxRows.

person Al W    schedule 10.03.2009
comment
Я использую соединение ADO, команду и т. д., и после загрузки результатов в список объектов (мои классы сущностей) я создаю datagrid.DataSource = List; - person Victor Rodrigues; 10.03.2009
comment
взгляните на эту статью. codeproject.com/KB/aspnet/PagingWithODS.aspx - person Al W; 10.03.2009