Панель обновления, запускаемая JavaScript, не обновляется правильно - PullRequest
1 голос
/ 20 июня 2011

Я работаю над большим и сложным проектом ASP.NET.

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

Мне удалось создать очень упрощенный проект, который демонстрирует проблему, и разместил его на http://www.softcircuits.com/Client/TestProject.zip.

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

Ответы [ 2 ]

1 голос
/ 21 июня 2011

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

Вот что на самом деле происходит.

  1. __ doPostback опубликовать значения страницы на сервере
  2. в параметрах записи значения обоих текстовых полей не заполнены
  3. На сервере происходит событие Load, и вы изменяете текст текстовых полей
  4. EventHandlers выполняются, и публикуемые значения устанавливаются в 2 текстовых окнах (они оба сбрасываются в пустые
  5. ...
  6. Панель обновления отображается с пустыми значениями

Таким образом, если вы поместите тестирование в одно из текстовых полей и нажмете кнопку, вы увидите, что значение « testing » отправляется на сервер и возвращается.

1|#||4|356|updatePanel|MainContent_WebUserControl11_ctl00_UpdatePanel1|
        <p>
            Message:<br />
            <input name="ctl00$MainContent$WebUserControl11$ctl00$TextBox1" type="text" value="testing" id="MainContent_WebUserControl11_ctl00_TextBox1" />
        </p>

Таким образом, чтобы обновить значения элемента ввода на панели обновления, вам нужно сделать это в событии Pre_render. С другой стороны, вы можете обновить метку на on_load, и она будет работать.

Надеюсь, это поможет.

1 голос
/ 20 июня 2011

Попробуйте установить значения текстовых полей в событии OnPreRender UpdatePanel вместо OnLoad.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...