2012-09-12 33 views
0

我有2套asp:TextBox與更新面板和另一外內一組asp:Button控制工作..的UpdatePanel中的請求和響應方面

<asp:UpdatePanel runat="server"> 
     <ContentTemplate> 
      <asp:Button Text="text" runat="server" ID="btn1"/> 
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
    <asp:Button Text="text" runat="server" ID="btn2"/> 
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 

代碼隱藏

protected void Page_Load(object sender, EventArgs e) 
    { 
     TextBox1.Text = TextBox2.Text; 
    } 

現在我的問題是,如何更新面板工作?

其實我以爲,在btn1點擊只有UpdatePanel的內容被髮送到服務器作爲請求和響應來自服務器到只有該更新面板。

所以,我在TextBox2中輸入一些文字,點擊btn1 ..但令人驚訝的TextBox1文本得到了改變,以作爲的TextBox2 ..

後來我想,整個頁面被髮送到服務器的請求和響應來只有到的UpdatePanel,並進行相應的更新..

現在我檢查都在谷歌Chrome開發者工具的要求(即,從btn1btn2請求)..再次出乎我的意料,有在請求Content-Length差異..

如果有更新面板之外更多的控制,則Content-Length會比較與請求從btn2

可能有人把一些光在這個..

回答

0

行..這裏的事情是,即使你在頁面中有一個UpdatePanel,當一個回發發生時,所有的內容都被回發到服務器。這表現得像沒有UpdatePanel的普通頁面。這就是你有一個選擇的UpdateMode的UpdatePanel的原因...

這是的UpdateMode = 「始終」的UpdateMode = 「有條件」

因爲你沒有設置任何東西在這裏它始終是在默認情況下,因爲它的整個頁面被回發...

要查看你添加的UpdatePanel後找你需要設置它的變化有條件和元素添加爲AsynPostbackTriggers ...

<asp:UpdatePanel runat="server" UpdateMode="Conditional"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="btn1" /> 
    </Triggers> 
    <ContentTemplate> 
     <asp:Button Text="text" runat="server" ID="btn1"/> 
     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    </ContentTemplate> 
</asp:UpdatePanel> 
<asp:Button Text="text" runat="server" ID="btn2"/> 
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 

現在,當您點擊BTN1只是裏面的內容的UpdatePanel被調回並可以在響應中可以看出。

如果點擊BTN2僅在UpdatePanel外的內容見於響應..

+0

我發現,在請求和響應無差異通過使'的UpdateMode =「條件」'...'UpdateMode'真叫感覺什麼時候有多個UpdatePanel,如果我沒有錯的話.. – dotNETbeginner

+0

不,不是這種情況..如果你不想更新面板的時候,你把它設置爲Conditional ..在這種情況下,你做了當點擊btn2時,不希望內容刷新..在這種情況下,它是有幫助的。您是否在頁面上設置了EnablePartialRendering =「true」。您是否也在瀏覽器的控制檯部分看到任何錯誤.. –

+0

當單擊'btn2'時,無論您做什麼,它都會將整個頁面回發給服務器,並且整個頁面都會刷新..並且默認情況下'EnablePartialRendering'爲'true' .. – dotNETbeginner