2010-09-22 189 views
0

我的內容頁面與需要幫助的UpdatePanel

<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:面板..然後它工作正常..喜歡面板1會隱藏和麪板2會顯示出來..這是後我改變ASP:Panel到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> 
+0

「這不是我們如何實現這個東西」 - 如果你明白了,是的。我的猜測是你的按鈕不在UpdatePanel中。 – RPM1984 2010-09-22 06:46:36

+0

你不能以編程方式「隱藏」這樣的UpdatePanel。因爲UpdatePanel是觸發回發的「容器」,然後當它回發時你試圖「隱藏自己」?如果你仔細想想,它是沒有意義的。重新思考你的解決方案 - 你想做什麼? – RPM1984 2010-09-22 06:48:32

+0

我只是rechecked ..它是僅在updatePanel裏面 – Serenity 2010-09-22 06:49:57

回答

1

如果您在UpdatePanel上設置了Visible="false",則根本不會呈現給客戶端。因此,如果您正在執行Ajax回發,客戶端將無法看到不可見的UpdatePanel,因爲它不在那裏。

將UpdatePanels當作標記,顯示您希望在Ajax回發中更新頁面的哪些位。對於您的情況,我認爲最簡單的解決方案是使用這兩個 UpdatePanels和麪板。此外,因爲您要更新的兩件事情(這兩個面板)緊挨着彼此,沒有必要爲兩個獨立的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控件。

+0

等等,讓我馬上試試這個..我也是這樣,即使用兩個面板 – Serenity 2010-09-22 07:15:51

-1

我不知道你的提交按鈕,但也許嘗試更新這些面板具有:

Panel1.Update(); 
Panel2.Update(); 
+0

這將無法正常工作 - 因爲'UpdateMode'和'ChildrenAsTriggers'屬性沒有它們將成爲默認值,所以兩個UpdatePanels都將在每個Ajax回發中更新。不可見的UpdatePanel不更新的原因是因爲它不在客戶端中。 – 2010-09-22 07:14:47

2

http://msdn.microsoft.com/en-us/magazine/cc163413.aspx#S3,你可以閱讀

多的UpdatePanel

一個頁面可以託管多個UpdatePanel。默認情況下,當頁面上的一個UpdatePanel更新時,頁面上的其他UpdatePanels也會更新。有時候這就是你想要的,但更多的時候,你並不需要每個UpdatePanel都響應其他UpdatePanel更新。 通過將頁面上每個UpdatePanel控件的UpdateMode屬性設置爲「有條件」,您可以選擇哪些UpdatePanel實例更新(以及何時)。然後,當一個UpdatePanel更新並調用服務器端事件處理程序時,請在您要更新的其他面板上調用UpdatePanel.Update。這通過減少呈現控件的數量來減少服務器上的負載,並且減少了響應中的數據量,因爲不更新的UpdatePanel不會向響應添加任何內容。