Как обновить страницу из рабочего потока - PullRequest
0 голосов
/ 30 июля 2010

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

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

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

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

Есть мысли или помощь? Спасибо.

1 Ответ

0 голосов
/ 30 июля 2010

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

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