我正在尝试htmltablecell.innerHTML
在Page_PreRender
.
第一次设置时它工作正常。
此后,我需要将引用设置为字符串中的新值(我已检查字符串值是否已更改),但它会继续在 HTML 输出中显示旧值。
当我调试 时htmltablecell.innerHTML
,我还可以看到该值已更改。
从方法设置值的原因Page_PreRender
是我有一个用户控件,它在Page_load
触发后更新字符串。
我正在尝试htmltablecell.innerHTML
在Page_PreRender
.
第一次设置时它工作正常。
此后,我需要将引用设置为字符串中的新值(我已检查字符串值是否已更改),但它会继续在 HTML 输出中显示旧值。
当我调试 时htmltablecell.innerHTML
,我还可以看到该值已更改。
从方法设置值的原因Page_PreRender
是我有一个用户控件,它在Page_load
触发后更新字符串。
如果在访问控件(在本例中为 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">
希望这可以帮助。