UpdatePanel.Update (), похоже, ничего не происходит - PullRequest
1 голос
/ 01 октября 2009

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

На странице с одной UpdatePanel и одним ScriptManager я сделал следующее:

protected void Page_Load(object sender, EventArgs e)
{
    if(scriptManager.IsInAsyncPostBack)
        testLabel.Text = "AfterUpdate";
    else
        jobsUpdatePanel.Update();
}

Это не то, что я хотел бы сделать: я хотел бы, чтобы отображалась страница, и немедленно запускал асинхронное обновление UpdatePanel для загрузки данных - это то, что я делаю вместо присвоения другого глупого текста testLabel.

Это разметка UpdatePanel (оставляя ContentTemplete для удобства чтения):

<asp:UpdatePanel ID="jobsUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="true" runat="server">

Постбэк не выполняется вообще. Кто-нибудь может подсказать, что я делаю неправильно?

Matthias

1 Ответ

2 голосов
/ 01 октября 2009

Вы не можете отправить обновление с сервера в браузер. Что делает метод Update, так это включает содержимое панели обновлений в ответ AJAX, поэтому для того, чтобы это имело эффект, должен быть ответ, возвращающийся в браузер.

Если вы хотите, чтобы длительный процесс выполнялся на сервере и получал обновления в браузере, вы должны запустить процесс в отдельном потоке, чтобы основной поток мог завершить работу и вернуть ответ браузеру. Затем браузер может выполнять постбэки или AJAX-вызовы на сервер и запрашивать в фоновом потоке статус прогресса.

...