我的内容页面
<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> 代码文件 ..The以下代码在提交按钮末尾单击事件:-
Panel1.Visible = false;
Panel2.Visible = true;现在,我正在使用asp:Panel..then,它正在工作,fine..like面板1会隐藏,面板2会显示,在我将asp:面板改为asp:updatePanel之后,提交按钮就不能工作了!!
怎么突然出问题了??我把它改成了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>发布于 2010-09-22 07:10:30
如果将Visible="false"设置在UpdatePanel上,则根本不会将其呈现给客户端。因此,如果您正在执行Ajax回发,客户端将无法使不可见的UpdatePanel可见,因为它只是不存在。
将UpdatePanels看作标记,显示您希望在Ajax回发中更新的页面的哪些部分。对于您的场景,我认为最简单的解决方案是同时使用UpdatePanels和面板。另外,由于您正在更新的两件事情(两个面板)是相邻的,所以不需要使用两个单独的UpdatePanels:
<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>然后在代码隐藏中,更改Panel控件上的Visible属性。
发布于 2010-09-22 06:51:07
在http://msdn.microsoft.com/en-us/magazine/cc163413.aspx#S3,你可以阅读
多重UpdatePanels
一个页面可以承载多个UpdatePanels。默认情况下,当页面上的一个UpdatePanel更新时,页面上的另一个UpdatePanels也会更新。有时,这正是您想要的,但更多的情况是,您不需要每个UpdatePanel更新来响应其他UpdatePanels。通过将页面上每个UpdatePanel控件的UpdateMode属性设置为“条件”,可以选择哪些UpdatePanel实例更新(以及何时更新)。然后,当一个UpdatePanel更新并调用服务器端事件处理程序时,在要更新的其他面板上调用UpdatePanel.Update。这减少了呈现控件的数量,从而减少了服务器上的负载,并减少了响应中的数据量,因为不更新的UpdatePanels不向响应添加任何内容。
发布于 2010-09-22 06:48:46
我不知道你的提交按钮在哪里,但也许可以尝试用以下方式更新这些面板:
Panel1.Update();
Panel2.Update();https://stackoverflow.com/questions/3766901
复制相似问题