none
Немедленное срабатывание UpdatePanel RRS feed

  • Вопрос

  • В процессе написания ASP.Net приложения возникла необходимость выполнения метода updatePanel.Update сразу после его вызова

    Например:
    при вызове метода Button_Click отработать следующий код:
    for (int i=0; i<10; i++)
    {
    Thread.Sleep(1000);
    lblFoo.Text = i.ToString();
    UpdatePanel.Update();
    }
    

    В итоге получается, что на lblFoo записывается только последнее значение i. То есть, метод Update() ждет выполнения всего жизненного цикла страницы.
    Как сделать так, чтоб на метку записовалось значение i каждой итерации?
    • Перемещено ulcerModerator 20 октября 2011 г. 6:23 (От:Настольные ПК)
    20 октября 2011 г. 5:45

Ответы

  • Как сделать так, чтоб на метку записовалось значение i каждой итерации?

    Что значит заприсывалось значение каждой итерации, вы хотите обновлять странцу после каждой итерации?

    Если вы хотите видеть на странице результат обновления, то без postback-ов после каждой итерации никак - т.е.можно, примерно, так:

    На сервере обработчик:
    
    Thread.Sleep(1000);
    
    try
    {
    lblFoo.Text = (int.Parse(lblFoo.Text) + 1).ToString();
    } 
    catch(FormatException)
    {
    lblFoo.Text = "1";
    }
    

    На клиенте вставьте скрипт где-нить на onload:

    function raiseUpdate() {
                    var i = document.getElementById('<%=lbFoo.ClientID%>');
    
                    var btn = document.getElementById('<%=your_button.ClientID%>');
    
                    if (parseInt(i.innerHTML) < 10) {
                        btn.click();
                    }
                }
    


    Это так, на вскидку набросал - не проверял, но идея думаю понятна.

     

    20 октября 2011 г. 13:12