【问题标题】:How to change asp:Label content in UpdatePanel after update?更新后如何更改更新面板中的 asp:Label 内容?
【发布时间】:2009-11-15 13:15:21
【问题描述】:
我在更新面板中有一个 asp:Label,我需要从服务器应用程序和客户端 Javascript 进行更新。通过设置 label.innerHTML,我可以在第一次 UpdatePanel 刷新之前很好地更新标签。服务器在面板更新期间正确更改标签。更新后,通过客户端 Javascript 设置 label.innerHTML 不再改变浏览器中显示的值。
如何在 UpdatePanel 更新后找到标签以继续从 Javascript 更新它?
【问题讨论】:
标签:
asp.net
updatepanel
label
【解决方案1】:
您在 UpdatePanel 刷新之前使用 document.getElementById 获得的对 DOM 元素的引用在刷新后不再有效,因为标签被替换为新的 DOM 元素。因此,您需要获取对该元素的新引用并将 innerHTML 设置为该新引用。
事件可能如下所示
var label = document.getElementById('some_label'); label.innerHTML = 'abc';
- UpdatePanel 被触发,它替换了 DOM 中的标签
-
label.innerHTML 不再有效。您需要在此处重复步骤 1)。
【解决方案2】:
当 UpdatePanel 刷新时,DOM 元素被替换。您对前一个 DOM 元素的任何引用都不再可用,它们引用了已删除且不再存在的 DOM 元素。您需要先找到替换的 DOM 元素,然后才能访问其属性。您可以使用 document.getElementById('label') 或使用 jQuery 的 $('#label') 来执行此操作,假设您已将其命名为 label。