基于jquery的ViewManage 数据局部刷新
2009-12-26 12:03
295 查看
局部刷新大量数据。 可以使用ajaxpro的updatepanel或者使用拼写html表格来填充数据。下面的方法是使用了usercontrol控件的无刷新技术,有点点偷懒的感觉。
1,首先是viewmanage类
2 新建一个uesercontrol。
usercontrol 代码如下:
3. 新建ashx文件,用于根据ajax请求,获取数据
4. 前台页面调用如下
5 总结。 至此,整体数据无刷新已经完成。 点击按钮,直接ajax请求数据,将用户控件里面生成的表格直接填充到前台, 省去了自己拼接html代码时间。
1,首先是viewmanage类
using System.Web.UI; using System.Web.UI.HtmlControls; using System.IO; using System.Web; /// <summary> /// 虚拟的页面 /// </summary> internal class VirtualPage : Page { /// <summary> /// 覆盖服务器控件生成方法,原因虚拟页面没有Form元素,不覆盖的话,服务器控件解释报错 /// </summary> /// <param name="control"></param> public override void VerifyRenderingInServerForm(Control control) { } } /// <summary> /// Ajax控件视图类 /// </summary> /// <typeparam name="T">Web用户控件</typeparam> public class ViewManager<T> where T : UserControl, System.IDisposable { /// <summary> /// 虚拟页面 /// </summary> private VirtualPage _pageHolder; /// <summary> /// 构造函数 /// </summary> public ViewManager() { _pageHolder = new VirtualPage(); } /// <summary> /// 读取控件 /// </summary> /// <param name="path">控件路径</param> /// <returns>返回控件的类型</returns> public T LoadViewControl(string path) { _pageHolder.EnableViewState = false; return (T)_pageHolder.LoadControl(path); } /// <summary> /// 解释控件HTML成string /// </summary> /// <param name="control">控件类</param> /// <returns>返回控件HTML</returns> public string RenderView(T control) { try { _pageHolder.Controls.Add(control); StringWriter output = new StringWriter(); HttpContext.Current.Server.Execute(_pageHolder, output, false); _pageHolder.Controls.Clear(); return output.ToString(); } catch { return string.Empty; } } /// <summary> /// 释构 /// </summary> public void Dispose() { _pageHolder.Dispose(); } }
2 新建一个uesercontrol。
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %> <asp:GridView ID="lvEmpList" runat="server"> <PagerTemplate> <tr style="height:27px"> <td><%#Eval("Name")%></td> <td><%#Eval("Body")%></td> <td><%#Eval("Height")%></td> </tr> </PagerTemplate> </asp:GridView>
usercontrol 代码如下:
public partial class WebUserControl : System.Web.UI.UserControl { /// <summary> /// 数据源 /// </summary> private object _dataSource = null; /// <summary> /// 数据源 /// </summary> public object DataSource { set { _dataSource = value; } } /// <summary> /// 绑定数据 /// </summary> public void SetData() { lvEmpList.DataSource = _dataSource; lvEmpList.DataBind(); } }
3. 新建ashx文件,用于根据ajax请求,获取数据
<%@ WebHandler Language="C#" Class="Handler" %> using System; using System.Web; using System.Data; public class Handler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; //******主要代码************** ViewManager<WebUserControl> manage = new ViewManager<WebUserControl>(); WebUserControl wuc = manage.LoadViewControl("~/WebUserControl.ascx"); DataSet ds = BindData(); wuc.DataSource = ds.Tables[0]; wuc.SetData(); context.Response.Write(manage.RenderView(wuc)); //******主要代码************** } public bool IsReusable { get { return false; } } private DataSet BindData() { return null;//获取数据 } }
4. 前台页面调用如下
<mce:script type="text/javascript" src="js/jquery.js" mce_src="js/jquery.js"></mce:script> <mce:script type="text/javascript"><!-- function getDateFromHandeler(){ $.post("Handler.ashx",{},function(result){ if(confirm("想要看ViewManage的威力了吗?")==1){ $("#divContent").html(result); } }); } // --></mce:script> <title>使用虚拟页返回控件html示例</title> </head> <body> <form id="form1" runat="server"> <div> <input type="button" value="按钮" onclick="getDateFromHandeler();"/> <div id="divContent"> </div> </div> </form> </body> </html>
5 总结。 至此,整体数据无刷新已经完成。 点击按钮,直接ajax请求数据,将用户控件里面生成的表格直接填充到前台, 省去了自己拼接html代码时间。
相关文章推荐
- 利用jquery load 局部刷新数据
- 基于jQuery捕获超链接事件进行局部刷新代码
- jQuery实现局部刷新页面数据绑定
- 利用jquery load 局部刷新数据
- Jquery 局部刷新及 表单取值赋值 处理返回json数据 一些基本操作
- Jquery 局部刷新及 表单取值赋值 处理返回json数据 一些基本操作
- 运用jquery局部刷新从数据库取出的数据
- 利用jquery load 局部刷新数据
- Jquery 局部刷新及 表单取值赋值 处理返回json数据 一些基本操作
- RecyclerView配合DiffUtil,数据对比,局部刷新
- Jquery 局部刷新及 表单取值赋值 处理返回json数据
- 利用jquery load局部刷新数据
- ios-day13-01(私人通讯录。控制器之间的数据传递、保存密码和自动登录的实现、普通对象的归档、UITableView的局部刷新和向左滑动删除功能等等)
- 利用jquery load 局部刷新数据
- 基于jQuery捕获超链接事件进行局部刷新代码
- 基于Ajax:实时刷新数据,实时显示状态,局部刷新的示例。
- jQuery请求Action局部刷新数据
- [MVC] 关于jquery调用PartialView局部刷新的问题