<asp:UpdatePanel runat="server" ID="updatepanel2" >
<ContentTemplate>
<asp:Image ID="Image1" runat="server" Width="705px" ImageAlign="AbsBottom" Height="234px" />
<asp:Timer runat="server" Enabled="true" Interval="6000" OnTick="timer2_tick" ID="timer2"></asp:Timer>
<asp:Label runat="server" ID="label6"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel runat="server" ID="updatepanel1">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server"
Width="515px" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging" AutoGenerateColumns="False" Height="400px" BorderStyle="Solid" >
<Columns>
<asp:BoundField DataField="序号" HeaderText="序号" SortExpression="序号" />
<asp:BoundField DataField="测量时间" HeaderText="测量时间" SortExpression="测量时间" />
<asp:BoundField DataField="测量日期" HeaderText="测量日期" SortExpression="测量日期" DataFormatString="{0:yyyy-MM-dd}" HtmlEncode="False" />
<asp:BoundField DataField="目前罐存重量(t)" HeaderText="目前罐存重量(t)" SortExpression="[目前罐存重量(t)]" NullDisplayText="0" ReadOnly="True" />
</Columns>
<RowStyle HorizontalAlign="Center" />
<PagerStyle BorderStyle="Solid" />
</asp:GridView>
<asp:Label runat="server" ID="label7"></asp:Label>
<asp:Timer runat="server" Enabled="true" Interval="10000" OnTick="timer1_tick" ID="timer1"></asp:Timer>
</ContentTemplate>
</asp:UpdatePanel> protected void timer1_tick(object sender, EventArgs e)
{
ds.Clear();
label7.Text = DateTime.Now.ToString();
}
protected void timer2_tick(object sender, EventArgs e)
{
label6.Text = DateTime.Now.ToString();
}单独任何一个timer工作都是好的,但合在一起就不行,求帮助
开始简单介绍了UpdatePanel的俩中触发器asyncPostBackTrigger和PostBackTrigger的作用
这里用例子大概在稍微深入地介绍下:
1,普通回调触发器(PostBackTrigger)
PostBackTrigger主要针对UpdatePanel模板内的子控件,因为当子控件被触发时。它只会更新模版内的数据,模板外的控件不会发生变化.当需要更新全局 内容的时候就可以通过PostBackTrigger触发器来实现页面的全部回调。下面是简单例子:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
<ContentTemplate>
<% =DateTime.Now.ToString()%>
<asp:Button ID="Button1" runat="server" Text="UpdatePanelButton" />
</ContentTemplate>
<Triggers>
<!--下面的注释掉,点击updatePanel内的button则只更新Panel内的时间,取消注释责全部更新-->
<!-- <asp:PostBackTrigger ControlID="Button1"/>-->
</Triggers>
</asp:UpdatePanel>
<br />
<% =DateTime.Now.ToString()%>
<asp:Button ID="Button2" runat="server" Text="Button" />
</form>
</body>
</html>2,异步回调触发器(AsyncPostBackTrigger)
是实现局部更新的关键,在触发器内定义引起回发的控件和事件
例:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
<ContentTemplate>
<% =DateTime.Now.ToString()%>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button2" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<br />
<% =DateTime.Now.ToString()%>
<asp:Button ID="Button2" runat="server" Text="Button" />
</form>
</body>
</html>运行了发现点击button2的时候只更新了 updatepanel内部的时间
上面的例子也可以动态更新UpdatePanel的一些源代码:
具体例子就不写了下面 大概写点主要代码:protected void Page_Load(object sender, EventArgs e)
{
//获取更新控件儿
UpdatePanel mapanel = UpdatePanel1;
//设置触发模式
mapanel.UpdateMode = UpdatePanelUpdateMode.Conditional;
//显示时间
Label1.Text = DateTime.Now.ToString();
//添加触发
AsyncPostBackTrigger tri = new AsyncPostBackTrigger();
tri.ControlID = "Button2";
tri.EventName = "Click";
mapanel.Triggers.Add(tri);
}
updatepanel2。update()试试