ASP.NET Page_PreRender метод - PullRequest
       22

ASP.NET Page_PreRender метод

1 голос
/ 21 октября 2011

Я пытаюсь установить htmltablecell.innerHTML из кода на Page_PreRender.

Он отлично работает при первом включении.

В дальнейшем мне нужно установить ссылку нановое значение из строки (я проверил, что значение строки изменилось), но оно продолжает отображать старое значение в выводе HTML.

Когда я отлаживаю htmltablecell.innerHTML, я также вижу, чтозначение изменилось.

Причина, по которой значение устанавливается методом Page_PreRender, заключается в том, что у меня есть пользовательский элемент управления, который обновляет строку после срабатывания Page_load.

1 Ответ

2 голосов
/ 21 октября 2011

То, что вы описываете, может произойти, если обратная запись является асинхронной (запускается из элемента управления в UpdatePanel), когда доступ к элементу управления (в данном случае HtmlTableCell) находится за пределами UpdatePanel.

Не обращайте внимания, если это не так.

Редактировать

У вас есть два варианта.

Вы можете настроить элемент управления в UpdatePanel, который инициирует асинхронную обратную передачу для выполнения стандартной обратной передачи. Для этого определите PostBackTrigger в UpdatePanel, установив ControlID для идентификатора элемента управления, который вы хотите выполнить обратную передачу.

(Поскольку при этом будет выполняться полная обратная передача, HtmlTableCell будет доступен для изменения)

<asp:UpdatePanel ... >
     ...
    <Triggers>
        <asp:PostBackTrigger ControlID="ControlIDToPostBack" />
    </Triggers>
</asp:UpdatePanel>

Или вы можете добавить HtmlTableCell (и родительские строки, таблицу и т. Д.), Который вы хотите обновить, в другой параметр UpdatePanel, задав оба свойства UpdateManel UpdateMode в Always.

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

<asp:UpdatePanel ... UpdateMode="Always">

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

...