1

我正在尝试htmltablecell.innerHTMLPage_PreRender.

第一次设置时它工作正常。

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

当我调试 时htmltablecell.innerHTML,我还可以看到该值已更改。

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

4

1 回答 1

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">

希望这可以帮助。

于 2011-10-21T15:58:10.040 回答