2008-09-12 12 views
1

У меня есть страница с результатами поиска страниц (вы попадаете туда после отправки вашего поискового запроса в другом месте), у которой есть целая куча gridviews для разных типов объектов данных.Загрузка частичной страницы AJAX?

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

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

ответ

2

@Gareth Дженкинс

страница будет выполнять все запросы, прежде чем вернуться даже первую панель обновления, поэтому он не сбережет время там.

Уловка для этого заключается в перемещении каждого из ваших сложных gridviews в пользовательский элемент управления в пользовательском элементе управления, чтобы избавиться от дерьма Object DataSource и выполнить привязку в коде.

Написать свой код связывания, так что он связывает только в этой ситуации:

if (this.isPostBack && ScriptManager.IsInAsyncPostback) 

Затем на странице, programaticly обновить панель обновления, используя JavaScript после загрузки страницы, и вы получите каждый человек рендеринг gridview после его готовности.

0

Не могли бы вы поместить панели данных DataGrids в панели, которые имеют видимость, равную false, а затем вызвать функцию javascript на стороне клиента из события onload для тела, которое вызывает функцию на стороне сервера, которая устанавливает видимость панелей в true?

Если вы объединили это с asp: updateProgress и обернули все это в UpdatePanel, вы должны получить что-то близкое к тому, что вы ищете, особенно если вы настроили функцию js, вызванную onload, чтобы показать только одну панели и вызвать функцию возврата, который показал следующий и т.д.

Смежные вопросы