我的内容页面
<asp:updatePanel id="Panel1" runat="server" Visible="true">
<ContentTemplate>
<div>
blah blah
</div>
</ContentTemplate>
</asp:updatePanel>
<asp:updatePanel id="Panel2" runat="server" Visible="false">
<ContentTemplate>
<div>
yada yada
</div>
</ContentTemplate>
</asp:updatePanel>
代码文件 ..以下代码位于“提交”按钮点击事件的末尾: -
Panel1.Visible = false;
Panel2.Visible = true;
现在早些时候我正在使用asp:Panel ..然后它工作得很好..就像Panel 1会隐藏而Panel 2会显示出来..这是我改变后的asp:面板到asp:updatePanel事情搞砸了up ...现在提交按钮不起作用!!
突然出了什么问题?我将其更改为updatePanel,因此页面不刷新..这不是我们如何实现这个东西???
<asp:updatePanel id="Panel1" runat="server">
<ContentTemplate>
<div>
<p>
Type ur name
<asp:TextBox ID="name" runat="server">
</asp:TextBox>
</p>
<asp:Button ID="btn" OnClick="btn_Click" runat="server"
Text="Submit" />
</div>
</ContentTemplate>
</asp:updatePanel>
<asp:updatePanel id="Panel2" runat="server" Visible="false">
<ContentTemplate>
<div>
Thank You!
</div>
</ContentTemplate>
</asp:updatePanel>
答案 0 :(得分:2)
在http://msdn.microsoft.com/en-us/magazine/cc163413.aspx#S3,您可以阅读
多个UpdatePanel
一个页面可以托管多个UpdatePanel。默认情况下,当页面上的一个UpdatePanel更新时,页面上的其他UpdatePanel也会更新。有时这就是您想要的,但通常情况下,您不需要每个UpdatePanel更新以响应其他UpdatePanel。 您可以通过将页面上每个UpdatePanel控件的UpdateMode属性设置为“Conditional”来选择更新(以及何时)UpdatePanel实例。然后,当一个UpdatePanel更新并调用服务器端事件处理程序时,请在要更新的其他面板上调用UpdatePanel.Update。这通过减少呈现的控件数量减少了服务器上的负载,并且减少了响应中的数据量,因为不更新的UpdatePanel不会向响应添加任何内容。
答案 1 :(得分:1)
如果您在Visible="false"
上设置UpdatePanel
,则根本不会将其呈现给客户端。因此,如果您正在进行Ajax回发,则客户端将无法使不可见的UpdatePanel可见,因为它不存在。
将UpdatePanels视为标记,显示您希望在Ajax回发上更新页面的哪些位。对于您的方案,我认为最简单的解决方案是使用两个 UpdatePanels和Panels。此外,因为您正在更新的两件事(两个Panel)彼此相邻,所以不需要两个单独的UpdatePanel:
<asp:updatePanel id="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Panel id="Panel1" Visible="true" runat="server">
blah blah
</asp:Panel>
<asp:Panel id="Panel2" Visible="false" runat="server">
yada yada
</asp:Panel>
</ContentTemplate>
</asp:updatePanel>
然后在代码隐藏中,更改 Visible
控件上的Panel
属性。
答案 2 :(得分:-1)
我不知道您的提交按钮在哪里,但也许可以尝试使用以下内容更新这些面板:
Panel1.Update();
Panel2.Update();