拥有更集中的updatedpanel是否比整个页面只有一个大的通用updatedpanel有帮助?

本文关键字:updatedpanel 有一个 有帮助 集中 是否 拥有 | 更新日期: 2023-09-27 18:01:31

在更少的元素周围有更集中的updatedpanel,而不是在整个页面周围只有一个大的通用UpdatePanel吗?这样做的好处是什么?

拥有更集中的updatedpanel是否比整个页面只有一个大的通用updatedpanel有帮助?

拥有独立的UpdatePanels将允许您更新页面的隔离区域,从而减少下游和潜在的服务器端工作。

例如

。如果您有一个页面,其中LabelUpdatePanel包围,GridViewUpdatePanel包围,那么您可以添加Timer,它每5秒向服务器发送一次帖子,并将Label更新为当前日期时间。这样做时,您就不必在服务器端重新绑定网格,因为下游响应中不涉及网格的内容。

结果将是:在第一个请求时绑定Label和Grid。只刷新每个计时器刻度上的标签。

编辑:添加示例

标记:

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

请记住,UpdatePanel只告诉引擎哪个控件需要重新绘制;页面的整个生命周期仍然发生。

这并不是在贬低重绘较小元素的好处。

相关文章: