2010-07-30 2 views
0

У меня есть страница ASPX, которая запрашивает базу данных. Когда у нас есть набор данных, он привязан к gridview и отображается на странице. Все это происходит в событии Page_Load.Как обновить страницу из рабочего потока

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

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

Если я выполняю запрос в рабочем потоке, а затем вызываю метод Update на UpdatePanel с gridview как часть его, он не работает. Ничего не произошло.

Любые мысли или помощь? Благодарю.

ответ

0

Ну, это хороший вопрос. Лично у меня есть два довольно похожих метода:

  1. У вас есть сценарий java, который будет перезагружать UpdatePanel с коротким интервалом. Это создаст серию обратных ссылок на сервер. Во время каждого пост-спина вы должны щекотать свою рабочую нить и сразу же возвращать отчет о состоянии, обычно один из error, pending, success + data
  2. С помощью java-скрипта выполните асинхронный запрос к веб-службе, которая будет блокироваться до тех пор, пока данные извлекается. Этот метод не обеспечивает латентности по сравнению с предыдущим (время между опросами), но может быть связано с отношением некоторых браузеров и серверов к висящим открытым соединениям. Обычно это разрешается с помощью некоторого интервала (скажем, 1 минута), поэтому запрос на зависание будет возвращаться с сообщением типа need more time, и в этом случае сценарий java должен просто повторить запрос.
+0

Можете ли вы подробно остановиться на 1 с помощью простого примера? – IceFossil