C# .NET Ajax控件异步跟新实例
2011-08-11 17:56
363 查看
说明:异步跟新当前页面,将页面中修改后的信息保存在历史记录点中。跳转到其他页面后,点击浏览器后退按钮。回到原来页面,触发Navigate事件,调用方法读取历史记录点还原当前页。
代码什么的,还是要上机试了再贴
前台HTML结构:
后台代码:
关于Navigate事件何时触发:
目前我发现是在,保存历史记录点后(URL内容变化),跳转到其他页面,在点击浏览器后退按钮后触发,可用来还原页面信息。
代码什么的,还是要上机试了再贴
前台HTML结构:
<!-- 管理页面脚本资源,存在于所有Ajax控件之前 --> <!-- 设置允许操作浏览器历史记录,对保存历史信息不加密 --> <asp:ScriptManager ID="ScriptManager1" runat="server" EnableHistory="true" EnablePartialRendering="true" OnNavigate="ScriptManager1_Navigate" EnableSecureHistoryState="false" /> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="ScriptManager1" EventName="Navigate" /> </Triggers> </asp:UpdatePanel> <div> <asp:Button ID="butSearch" runat="server" Text="搜 索" OnClick="butSearch_Click" /><br /> <a href="OtherPage.aspx">跳转</a> </div> <asp:UpdatePanel ID="UpdatePanel2" runat="server"> <ContentTemplate> <asp:Label ID="Label1" runat="server" Text="无数据"></asp:Label> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="ScriptManager1" EventName="Navigate" /> <asp:AsyncPostBackTrigger ControlID="butSearch" EventName="Click" /> </Triggers> </asp:UpdatePanel>
后台代码:
#region 事件 protected void ScriptManager1_Navigate(object sender, HistoryEventArgs e) { LoadHistoryPoint(e.State); Bind(); } protected void butSearch_Click(object sender, EventArgs e) { Bind(); } #endregion #region 方法 private void Bind() { this.Label1.Text = DateTime.Now.ToString(); if (ScriptManager1.IsInAsyncPostBack && !ScriptManager1.IsNavigating) { SaveHistoryPoint(); } } //保存当前页面状态信息(历史记录点)到浏览器 private void SaveHistoryPoint() { NameValueCollection state = new NameValueCollection(); state[Request.Url.AbsolutePath] = Request.Url.AbsolutePath; state["TextBox1"] = TextBox1.Text; state["Label1"] = Label1.Text; //保存历史时间点(仅以 URL 的形式存储在浏览器的历史记录堆栈中!) //会将state信息直接追加在URL后(浏览器地址栏: #(片段分隔符)分隔,状态信息跟在“&&”后) //因此需要控制大小,仅存储重新创建状态所需的信息 ScriptManager1.AddHistoryPoint(state, "historypoint"); } //读取历史记录点还原页面状态 private void LoadHistoryPoint(NameValueCollection state) { TextBox1.Text = state["TextBox1"].ToString(); Label1.Text = state["Label1"].ToString(); } #endregion
关于Navigate事件何时触发:
目前我发现是在,保存历史记录点后(URL内容变化),跳转到其他页面,在点击浏览器后退按钮后触发,可用来还原页面信息。
相关文章推荐
- Ajax实例:ASP.NET 异步回调开发重构
- [原创]Tree控件的异步加载方案的选择建议(C#,ASP.NET 2.0)
- asp.net ajax控件实例 和学习
- Javascript 直接调用服务器C#代码 ASP.NET Ajax实例
- ASP.NET Ajax实例—Javascript直接调用服务器C#代码
- c#、asp.net 基于ajaxfileupload.js 实现文件异步上传
- ASP.NET Ajax实例—Javascript直接调用服务器C#代码
- asp.net,C#,FileUpload控件文件上传简单实例,vs2010
- ASP.NET Ajax实例—Javascript直接调用服务器C#代码
- ASP.NET Ajax实例—Javascript直接调用服务器C#代码
- asp.net,C#,html控件的File控件文件上传简单实例,vs2010
- 用jQuery实现asp.net 2.0 treeview控件完全无刷新操作实例(AJAX的增、删、改、选择以及展开收缩节点)
- Javascript 直接调用服务器C#代码 ASP.NET Ajax实例
- Tree控件的异步加载方案的选择建议(C#,ASP.NET 2.0)
- asp.net,C#,html控件的File控件实现多文件上传简单实例,vs2010
- AJAX+ASP.NET+XML异步交互实例-----写数据到XML文件
- Ajax(asp.net)技术实现异步刷新和控件功能示例流程
- .net Csharpt C# UDP 异步发送信息 代码实例
- [转]Tree控件的异步加载方案的选择建议(C#,ASP.NET 2.0)
- c# asp.net js 实现异步调用 ajax基础