У меня есть страница результатов страницы (вы попадаете туда после отправки поискового запроса в другом месте) с целым набором представлений сетки для различных типов объектов данных.
Очевидно, что некоторые запросы занимают больше времени, чем другие. Как я могу сделать рендеринг каждого gridview, если у него есть необходимые данные?
Для меня это было сложно, потому что это должно работать как с обратной передачей, так и с загрузкой страницы. Кроме того, источники данных объекта просто автоматически срабатывают при загрузке / обратной передаче страницы; Я не вызываю программно какие-либо методы для получения данных. Придется ли мне это изменить?





Не могли бы вы поместить DataGrids внутри панелей, для которых установлено значение видимости false, а затем вызвать функцию javascript на стороне клиента из события onload тела, которое вызывает функцию на стороне сервера, которая устанавливает для видимости панелей значение true?
Если вы объединили это с элементом управления asp: updateProgress и обернули все это в UpdatePanel, вы должны получить что-то близкое к тому, что ищете - особенно если вы настроили функцию js, вызываемую в onload, чтобы показать только одну панель и вызвать функция возврата, показывающая следующее и т. д.
@ Гарет Дженкинс
Страница выполнит все запросы, прежде чем вернет даже первую панель обновления, поэтому он не будет экономить там время.
Уловка для этого заключается в том, чтобы переместить каждое из ваших сложных представлений сетки в пользовательский элемент управления, в пользовательский элемент управления, избавиться от мусора Object DataSource и выполнить привязку в коде.
Напишите свой код связывания так, чтобы он связывал только в этой ситуации:
if (this.isPostBack && ScriptManager.IsInAsyncPostback)
Затем на странице программно обновите панель обновлений с помощью javascript после загрузки страницы, и вы получите каждый отдельный рендеринг gridview, как только он будет готов.