当 UpdatePanel 在计时器上更新自身时,css 样式会丢失

Posted

技术标签:

【中文标题】当 UpdatePanel 在计时器上更新自身时,css 样式会丢失【英文标题】:css styles being lost when an UpdatePanel updates itself on timer 【发布时间】:2012-09-19 04:54:53 【问题描述】:

当更新面板刷新时,我在更新面板中的元素丢失样式时遇到问题。我知道这不是一个新问题,并且已经阅读了以下主题

Someguys Blog on it

And another thread on it

可能的解决方法包括:用 div 包围更新面板,用 div 包围更新面板。

这在我的情况下实际上不起作用,因为我的更新面板中有几个元素,但我只想将样式应用于其中的两个元素,并且此方法使更新面板中的每个元素都反映样式。

任何建议将不胜感激

-J

【问题讨论】:

【参考方案1】:

您可以使用周围 div 上的类来控制 div 内元素的样式。将类放在里面的一些元素上来识别它们,并在周围的div上改变类来触发改变。

例子:

<div id="container" class="hide">
  This is the content that can change
  <div class="someelement">asf</div>
  <div>qwer</div>
  <div class="otherelement">uyhgf</div>
</div>

你可以改变外层div上的类:

document.getElementById('container').className = 'show';

现在您可以设置 CSS 规则以根据外部类显示内部元素的更改:

.hide .someelement  display: none; 
.show .someelement  display: block; 
.hide .otherelement  color: yellow; 
.show .otherelement  color: black; 

当计时器替换内容时,内部元素看起来仍然相同,因为控制外观的类位于外部 div 上。

【讨论】:

非常感谢,这就是我要找的!

以上是关于当 UpdatePanel 在计时器上更新自身时,css 样式会丢失的主要内容,如果未能解决你的问题,请参考以下文章

找不到ID为'xxx'的UpdatePanel。如果它是动态更新的,那么它必须在另一个UpdatePanel内

使用 JavaScript 或 jQuery 手动更新 UpdatePanel

UpdatePanel 中未更新的内容(在 Web 部件中)

ASP.NET UpdatePanel:在 UpdatePanel 更新上注入 Javascript

当其他更新面板执行时通过触发器刷新更新面板,因为第一个必须具有 UpdateMode=Conditional

如何阻止 UpdatePanel 导致整个页面回发?