2011-07-08 13 views
1

もっと集中したUpdatedPanelsがあると、全体のページ全体で1つの大きな一般的なUpdatePanelと比べて、より少ない要素で役立ちますか? このようなことをする利点は何ですか?もっと集中的なUpdatedPanelsは、ページ全体の1つの大きな一般的なUpdatePanelと比べて役立ちますか?

+0

UpdatePanelの目的は、部分ページのレンダリングを有効にすることです。したがって、UpdatePanelを1つ使用する場合は、ブラウザですべてレンダリングする必要があります。 –

答えて

2

別々のUpdatePanelsを使用すると、ページの独立した領域を更新することができ、結果的にサーバー側の作業が少なくなります。

たとえば、 UpdatePanelで囲んだGridViewのページがあり、UpdatePanelで囲まれたページがある場合は、Timerを追加して5秒ごとにサーバーに送信し、現在のDateTimeにラベルを更新します。これを行うと、グリッドの内容が下流の応答に含まれないため、サーバー側でグリッドを再バインドする必要はありません。

結果は:最初のリクエストでLabelとGridをバインドします。各タイマーティックのラベルのみをリフレッシュします。

EDIT:例が追加されました。

マークアップ:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:Timer ID="Timer1" runat="server" Interval="5000" ontick="Timer1_Tick"> 
     </asp:Timer> 
     <asp:Label ID="Label1" runat="server"></asp:Label> 
    </ContentTemplate> 
</asp:UpdatePanel> 

<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:GridView ID="GridView1" runat="server"></asp:GridView> 
    </ContentTemplate> 
</asp:UpdatePanel> 

は、分離コード:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     //Bind Grid, only on first load 
    } 
} 

protected void Timer1_Tick(object sender, EventArgs e) 
{ 
    Label1.Text = DateTime.Now.ToString(); //Set label 
    UpdatePanel1.Update(); //Update only Label's update panel 
} 
0

のUpdatePanelだけ再描画する必要がありますを制御するエンジンを告げることに注意してください。 entire life cycle of the page still occurs

これは、より小さな要素を再描画することの利点を割引くものではありません。

関連する問題