ASP.NET Page_PreRender方法

时间:2011-10-21 15:29:45

标签: asp.net asynchronous-postback

我正在尝试从htmltablecell.innerHTML上的代码设置Page_PreRender

第一次设置时效果很好。

此后我需要设置对字符串中新值的引用(我已经检查过字符串值是否已更改),但它会一直在HTML输出中显示旧值。

当我调试htmltablecell.innerHTML时,我也可以看到值已经改变。

Page_PreRender方法设置值的原因是我有一个用户控件在Page_load被触发后更新字符串。

1 个答案:

答案 0 :(得分:2)

当访问的控件(在本例中为HtmlTableCell)位于UpdatePanel之外时,如果回发是异步的(从UpdatePanel中的控件触发),那么你可能会发生什么。

如果不是这样,请忽略。

修改

您有两种选择。

您可以在UpdatePanel中设置控件,该控件启动异步回发以执行标准回发。为此,请在UpdatePanel中定义PostBackTrigger,将ControlID设置为您希望执行回发的控件的ID。

(因为这将执行完整的回发,然后可以修改HtmlTableCell)

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

或者您可以将要更新的HtmlTableCell(以及父行,表等)添加到另一个UpdatePanel,将UpdatePanel的UpdateMode属性设置为Always。

这将确保针对源自页面的所有回发更新两个UpdatePanel控件中的内容。其中包括异步回发。

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

希望这有帮助。