2013-05-27 227 views
1

我目前在更新面板中有更新面板。例如,我有一个主页面,主页面内的所有内容都在一个updatepanel中,我将命名为updatepanel1。位于使用母版页的aspx页面中的较小更新面板称为updatepanel2。更新面板中的更新面板

但是我有一个计时器对象,我只希望刷新updatepanel2。但是,我的整个页面刷新,而不仅仅是updatepanel2。

究竟应该如何编写代码才能只刷新updatepanel2,而不是UpdatePanel1,因为我不希望刷新母版页中的全部内容。

编辑:看起来像它不会刷新的原因是因为我在页面中留下一个刷新HTML元标记,并忘记将其删除。

+0

这两个“UpdateMode”是什么?你能提供你的代码吗? –

回答

1

母版

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="WebApplication1.Site1" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <asp:ContentPlaceHolder ID="head" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:ScriptManager ID="ScriptManager1" runat="server"> 
      </asp:ScriptManager>    
      <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
      <ContentTemplate> <asp:Label Id="lblmaster" runat="server" Text="Label"></asp:Label> 
       <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> 
      </ContentTemplate>    
      </asp:UpdatePanel>  
    </div> 
    </form> 
</body> 
</html> 

aspx页面ASPX页面

<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication1.WebForm2" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:Label ID="labelform" runat="server" Text="Label"></asp:Label> 
      <asp:Timer ID="Timer1" runat="server" ontick="Timer1_Tick" Interval="10"> 
    </asp:Timer> 
    </ContentTemplate> 
    <Triggers> 
    <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick"/> 
    </Triggers> 

    </asp:UpdatePanel> 

</asp:Content> 

代码隐藏

using System; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebApplication1 
{ 
    public partial class WebForm2 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void Timer1_Tick(object sender, EventArgs e) 
     { 
      labelform.Text = DateTime.Now.ToString(); 
     // UpdatePanel1.Update(); 
      Label lblmaster = this.Master.FindControl("lblmaster") as Label; 
      lblmaster.Text = DateTime.Now.ToString(); 
     } 
    } 
} 

注:

  1. 都更新面板的设置更新模式为“有条件”

  2. 添加时间控制在updatePanel2

  3. 添加AsynhronousTrigger内UpadatePanel2并设置控件ID定时器和蜱eventas事件名称。

  4. 将你的代码添加到timer_tick中,在代码后面翻转并查看。

重要的一点是在这里你必须做的非同步调用服务器和更新的updatepane为有条件的页面集更新模式只有特定的药水,你必须设置一些条件在触发

更新的特定部分

希望这可以帮到你

谢谢你继续编码.........! :)

0

documentation from Microsoft讲述了导致UpdatePanel更新的不同情况。我强烈建议您将更新面板的使用限制为仅需要它的控件,而不是将整个页面包装在其中。

或者,更好的办法是消除UpdatePanel并使用JQuery或Microsoft Ajax来更新您的内容。它的副作用较少。