ASP.Net ListView Обратная передача медленная с большим количеством данных в просмотре списка - PullRequest
3 голосов
/ 20 июля 2011

У меня есть список на моей странице, который может отображать 10000 или более строк.

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

Я добавил EnableViewState = "false" в элемент управления ListView, но он не изменился. Я посмотрел на запрос в Fiddler, и если у клиента на экране, скажем, 50 строк, длина содержимого запроса мала - если у них 10 000 или что-то еще, это огромно.

У кого-нибудь есть исправление?

1 Ответ

3 голосов
/ 20 июля 2011

Это происходит потому, что связанный с данными элемент управления (включая представление списка) будет хранить свой источник данных в состоянии просмотра.Таким образом, состояние просмотра будет большим, поскольку размер страницы будет увеличиваться.

Одним из решений является отключение состояния просмотра для просмотра списка и его привязка при каждом посте страницы назад.

Еще лучшеРешение состоит в том, чтобы выполнить подкачку на стороне хранилища данных, т. е. если вы показываете только 50 строк, то получите только 50 строк из базы данных.Обычно это называется настраиваемой подкачкой в ​​ASP.NET, и вы можете найти несколько примеров настраиваемой подкачки для вашей технологии доступа к данным.Например,

настраиваемая подкачка страниц Entity Framework & ObjectDataSource: http://geekswithblogs.net/Frez/articles/using-the-entity-framework-and-the-objectdatasource-custom-paging.aspx

Функции ранжирования SQL Server можно использовать для подкачки страниц в хранимой процедуре: http://msdn.microsoft.com/en-us/library/bb445504.aspx

...