。net中局部刷新问题 点击button2后。Viewstate恢复到了先前的状态了。。不知道理解的对不对。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不想 点击button2,div"name1"显示 把两个按钮都放在两个updatePanel之外,分别配置它的trigger 试试 这样还是不要用updatepanel吧,只用js也可以实现的 首先,UpdatePanel应该设置UpdateMode为独立刷新的模式。既然是一个共性的东西,应该设计为单独的ascx。我写的demo,如下:文件 TestTimerControl.asax:<%@ Control Language="C#" %><script runat="server"> public int 点击按钮后等待的秒数 { get { EnsureChildControls(); return this.Timer1.Interval / 1000; } set { EnsureChildControls(); this.Timer1.Interval = value * 1000; } } public string 按钮文字 { get { EnsureChildControls(); return this.Button1.Text; } set { EnsureChildControls(); this.Button1.Text = value; } } public event EventHandler<EventArgs> 到时间提醒; protected void Button1_Click(object sender, EventArgs e) { this.Timer1.Enabled = true; } protected void Timer1_Tick(object sender, EventArgs e) { Timer1.Enabled = false; if (this.到时间提醒 != null) this.到时间提醒(this, EventArgs.Empty); }</script><asp:Button ID="Button1" runat="server" Text="定时" OnClick="Button1_Click" /><asp:Timer ID="Timer1" runat="server" Enabled="False" OnTick="Timer1_Tick" />这个组件中含有一个按钮和一个Timer控件,以及一个事件。当按下按钮之后,等待一段时间(参数上设置的),然后触发事件通知外界“时间到了”。这样,把它拖入asp.net ajax的任何页面就可以。例如我在下面的简单测试页面上两个UpdatePanel里分别拖入一个组件实例,然后分别设置事件aa和bb,再写上aa方法和bb方法的后台代码:<%@ Page Language="C#" %><script runat="server"> protected void aa(object sender, EventArgs e) { this.Label1.Visible = false; this.TestTimerControl1.Visible = false; } protected void bb(object sender, EventArgs e) { this.Label2.Text = DateTime.Now.ToLongTimeString(); }</script><%@ Register Src="TestTimerControl.ascx" TagName="TestTimerControl" TagPrefix="uc1" %><!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:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:Label ID="Label1" runat="server" Text="Label-1"></asp:Label> <uc1:TestTimerControl ID="TestTimerControl1" runat="server" 点击按钮后等待的秒数="3" 按钮文字="隐藏" On到时间提醒="aa" /> </ContentTemplate> </asp:UpdatePanel> <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:Label ID="Label2" runat="server" Text="Label-2"></asp:Label> <uc1:TestTimerControl ID="TestTimerControl2" runat="server" 点击按钮后等待的秒数="2" 按钮文字="显示现在的时间" On到时间提醒="bb" /> </ContentTemplate> </asp:UpdatePanel> </form></body></html> asp.net ajax处理流程,整个页面的状态是保持得好好的,你不会在某一个事件中发现以前别的地方的事件处理中涉及的控件属性“丢失”了。很多帖子中我们都看到动不动就无厘头地夸张js的做法。其实我们发现乱写javascript的人做不出复杂交互的页面,因为那样写会丢失页面状态。不要乱写脚本代码。 如果果真打算不考虑页面状态完整性地使用js来实现交互,应该放弃使用asp.net界面编程,asp.net代码仅仅用来实现脚本所访问的web服务功能。如果做得很彻底,那么你自己写一套页面状态管理系统,自己写一套远超过asp.net ajax能力的ajax作为你的公司的核心技术。 Sorry,“文件 TestTimerControl.asax”写错了,应该是“文件 TestTimerControl.ascx”。 sp1234,正解。将UpdatePanel封装到自定义控件,可解决一个页面多个UpdatePanel协同工作的问题。 请教:获取GridView中DropDownList事件选定值的问题 回发事件和直接提交表单有什么区别? 为什么没有Microsoft.Practices.EnterpriseLibrary.Caching? 为什么每次加了 2 求js无限分类树代码 一部分数据控件不可用 请教关于dataview的rowfilter功能 javascript onkeydown事件为什么响应2次 请教一个关于vss2005插件安装的问题,请达人帮忙指点一下。谢谢 关于页面跳转后按钮状态控制的问题 可不可以在sql语句中加入方法? ASP.NET 执行文件,拒绝访问
<%@ Control Language="C#" %><script runat="server">
public int 点击按钮后等待的秒数
{
get
{
EnsureChildControls();
return this.Timer1.Interval / 1000;
}
set
{
EnsureChildControls();
this.Timer1.Interval = value * 1000;
}
} public string 按钮文字
{
get
{
EnsureChildControls();
return this.Button1.Text;
}
set
{
EnsureChildControls();
this.Button1.Text = value;
}
} public event EventHandler<EventArgs> 到时间提醒; protected void Button1_Click(object sender, EventArgs e)
{
this.Timer1.Enabled = true;
} protected void Timer1_Tick(object sender, EventArgs e)
{
Timer1.Enabled = false;
if (this.到时间提醒 != null)
this.到时间提醒(this, EventArgs.Empty);
}
</script><asp:Button ID="Button1" runat="server" Text="定时" OnClick="Button1_Click" />
<asp:Timer ID="Timer1" runat="server" Enabled="False" OnTick="Timer1_Tick" />
这个组件中含有一个按钮和一个Timer控件,以及一个事件。当按下按钮之后,等待一段时间(参数上设置的),然后触发事件通知外界“时间到了”。这样,把它拖入asp.net ajax的任何页面就可以。例如我在下面的简单测试页面上两个UpdatePanel里分别拖入一个组件实例,然后分别设置事件aa和bb,再写上aa方法和bb方法的后台代码:<%@ Page Language="C#" %><script runat="server">
protected void aa(object sender, EventArgs e)
{
this.Label1.Visible = false;
this.TestTimerControl1.Visible = false;
} protected void bb(object sender, EventArgs e)
{
this.Label2.Text = DateTime.Now.ToLongTimeString();
}
</script><%@ Register Src="TestTimerControl.ascx" TagName="TestTimerControl" TagPrefix="uc1" %>
<!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:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label-1"></asp:Label>
<uc1:TestTimerControl ID="TestTimerControl1" runat="server" 点击按钮后等待的秒数="3" 按钮文字="隐藏"
On到时间提醒="aa" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label2" runat="server" Text="Label-2"></asp:Label>
<uc1:TestTimerControl ID="TestTimerControl2" runat="server" 点击按钮后等待的秒数="2" 按钮文字="显示现在的时间"
On到时间提醒="bb" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>