需要帮助updatePanel

时间:2010-09-22 06:43:51

标签: c# asp.net

我的内容页面

  <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>

3 个答案:

答案 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();