转发器中的UpdatePanel会覆盖它下面的控件

时间:2009-04-17 01:20:48

标签: asp.net asp.net-ajax updatepanel

我有一个带有ASP.NET AJAX 1.0 UpdatePanel的Repeater。 UpdatePanel外部有按钮,但仍在转发器中。当UpdatePanel中的某个部分出现时(它是一个隐藏的Panel控件,当用户以某种方式回答问题时出现),底部的按钮消失。

这是一个例子。

[REPEATER]
  [UPDATEPANEL]
     [QUESTION]   <-- when user says yes, Panel appears
     [PANEL]
  [/UPDATEPANEL]
  [TABLE]         <-- This table is no longer visible.
     [Button]
  [/TABLE]
[/REPEATER]

如果我将表格移到页面顶部,内容不会消失,所以我怀疑这是一个样式问题,控件实际上在那里,但是在UpdatePanel的内容下面。我尝试添加&lt; br clear =“all”/&gt;就在桌子前面,无济于事。

知道如何解决这个问题吗?

编辑:我有一个错误的关闭标记,导致UpdatePanel进一步扩展,因此它隐藏了我的控件。使用Firefox插件有助于识别这一点。

3 个答案:

答案 0 :(得分:2)

我的建议是使用Firefox和Web Developer工具栏在更新发生后执行View Generated Source或使用Firebug检查元素。如果表格html仍然在页面上,那么它可能是样式问题或面板中格式错误的HTML问题导致表格无法正确呈现。如果表html丢失,那么它将被AJAX回调从DOM中删除(或被覆盖)。您可以使用Firebug来调试实际的AJAX回调,以及查看实际被替换的内容和时间。

如果您仍然无法解决问题并想要更多输入,那么在问题更新前后发布生成的HTML也会有所帮助。

答案 1 :(得分:0)

将表放在updatepanel中,或将整个转发器放在一个更新面板中。

答案 2 :(得分:-1)

请注意,“清除”属性为Deprecated as of HTML 4.01isn't included in XHTML Strict - 您使用的是哪种文档类型 - 如果您使用严格(并且您明确使用某种类型的XHTML,因为您'我们关闭了你的br),然后你的浏览器完全可以忽略clear属性。

你最好用CSS做这件事:

<style type="text/css">
  .cleaner{
    clear: both;
  }
</style>

<br class="cleaner" />

此外,您可以尝试在面板之后放置br,以便它返回到UpdatePanel并强制浏览器兑现它。