本文转自:http://www.cnblogs.com/scy251147/archive/2011/04/16/2018355.html

接上面一节,上面还存在问题就是分页控件使用的仍然是服务器端控件,没点一次就要刷新页面一次,也就是向服务器端请求一次。那么用什么方法能够让页面无刷新而进行分页呢?

在这里,我想到了PagerView这套开源控件,有兴趣的朋友可以通过PagerView关键字去搜搜,然后研究下,这个封装的还是挺好的。

但是,这里遇到一个问题,如何让页面的GridView实现无刷新加载数据呢?这里我不得不提到我以前文章中写道的ICallbackEventhandler接口,这是微软的一个ajax回调接口,然后再配合这输出页面HTML的方式,不就可以实现无刷新GridView分页了吗?

前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PagerWithPagerView.aspx.cs" Inherits="PagerWithPagerView" %><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title></title><script src="tableview/scripts/jquery.js" type="text/javascript"></script><script src="tableview/scripts/PagerView.js" type="text/javascript"></script><link href="tableview/style.css" rel="stylesheet" type="text/css" /><link href="css/TableZB.css" rel="stylesheet" type="text/css" /><link href="css/swcss.css" rel="stylesheet" type="text/css" /><link href="css/GridViewCSS_O.css" rel="stylesheet" type="text/css" /><%--<style type="text/css">.PagerView a{background:url(images/loginButton.gif) no-repeat;}</style>--%></head>
<body><form id="form1" runat="server"><div id="myData"><asp:GridView CssClass="GVtable" ID="GridView1" runat="server" Width="100%" AutoGenerateColumns="False"><Columns><asp:TemplateField HeaderText="编号"><ItemTemplate><%#Eval("R").ToString() %></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="纳税人识别码"><ItemTemplate><%#Eval("nsrsbm").ToString() %></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="纳税人名称"><ItemTemplate><%#Eval("nsr_mc") %></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="登记类型"><ItemTemplate><%#Eval("djlx_mc")%></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="登记状态"><ItemTemplate><%#Eval("dj_ztmc")%></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="注册类型"><ItemTemplate><%#Eval("zclx_mc")%></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="所别"><ItemTemplate><%#Eval("gljg_mc")%></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="专管员"><ItemTemplate><%#Eval("zgy_mc")%></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="所属性"><ItemTemplate><%#Eval("ssx_mc")%></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="操作"><ItemTemplate><asp:LinkButton ID="lbtnOperation" CommandArgument='<%#Eval("nsrsbm") %>' runat="server">编辑</asp:LinkButton></ItemTemplate></asp:TemplateField></Columns></asp:GridView></div><script type="text/javascript">window.onload=function(){var pager = new PagerView('pager');  //pager对象申明
         pager.itemCount = <%=totalCount %>;  //设置当前显示的页索引
         pager.size = <%=_pageSize %>;  //设置每页显示条数
         pager.onclick = function(index) {raiseCallBack(index,"");  //当分页按钮被点击的时候,触发的Ajax回调函数
         };pager.render();}//ajax回调成功后,进行处理的函数function rServer(arg,context)  {$("#myData").text();$("#myData").html(arg);}//ajax回调函数,用户向后台请求数据function raiseCallBack(arg,context){<%=ClientScript.GetCallbackEventReference(this,"arg","rServer","context") %>; }
</script></form><div id="pager"></div>
</body>
</html>

那么在后台只要先实现ICallbackEventhandler接口,然后获取从前台传送过来的数据,进行处理,最后将html标签元素打到前台即可。

后台代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;public partial class PagerWithPagerView : System.Web.UI.Page,ICallbackEventHandler
{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){Bind();}}public static int _pageSize = 11;public static int _startSize = 1;public static int totalCount;public string _str;//绑定gridview  并将绑定后的gridview对象返回private GridView Bind()   {string sqlQuery = "select nsrsbm,nsr_mc,djlx_mc,dj_ztmc,zclx_mc,gljg_mc,zgy_mc,ssx_mc from scott.t_yhs_djxxtz";DataSet ds = Pagination.PaginationPager(sqlQuery, _pageSize, _startSize, out   totalCount);GridView1.DataSource = ds.Tables["Table"];GridView1.DataBind();return GridView1;}public string GetCallbackResult(){return _str;  //将html返回到前台
    }public void RaiseCallbackEvent(string eventArgument){if (!string.IsNullOrEmpty(eventArgument)){_startSize = Int32.Parse(eventArgument);Response.ClearContent();  //清除GridView gv=Bind(); //得到GridView对象System.Text.StringBuilder sb = new System.Text.StringBuilder();System.IO.StringWriter sw = new System.IO.StringWriter(sb);HtmlTextWriter htw = new HtmlTextWriter(sw);Header.RenderControl(htw);  gv.RenderControl(htw);  //将生成的html元素render出来_str = sb.ToString();  }}}

代码中已经有了注释,我这里不再详细说明,这里只要知道ICallbackEventhandler接口的使用方法即可。

[转]Oracle分页之三:利用PagerView来实现无刷新GridView相关推荐

  1. 利用Ajax实现DataGrid无刷新分页(AjaxGrid)【转】

    利用Ajax实现DataGrid无刷新分页(AjaxGrid) DataGrid功能强大,我们只用写几行代码就能够实现复杂的页面数据显示.数据多的时候免不了要分页显示,DataGrdi本身自带分页功能 ...

  2. tp5 分页php不能foreach,tp5框架无刷新分页实现方法分析

    本文实例讲述了tp5框架无刷新分页实现方法.分享给大家供大家参考,具体如下: 已tp5 分页为例, 1.默认生成的分页 页码如下: « 1 2 » 2.点击页码  值,跳转到对应的页面,并get传 p ...

  3. asp oracle 分页显示,利用ASP实现Oracle数据记录的分页显示

    [IT168 服务器学院]一.引言 通过浏览器访问数据量大的表时需要进行分页.ASP对数据库记录分页显示可以通过ADO对象集Recordset对象来实现.Recordset具有以下几个用于分页显示的属 ...

  4. php无刷新分页插件,jQuery插件jPaginate实现无刷新分页_jquery

    jPaginate是基于jQuery的动感滚动分页插件,它的表现形式是像分页的按钮一样,非常有意思的是这些按钮却可以滚动,可以通过单击或鼠标滑向点两侧的小箭头来控制按钮的前后滚动. PHP读取第一页数 ...

  5. 静态页中利用AJAX.NET实现无刷新页面

    一. 导言 我们知道,ASP.net应用程序事实是在服务器上运行的,用户的请求要不断地送往远程的服务器,服务器执行完本地的程序后把重新装载页面再发送客户端.所以就出现了不断刷新的问题,页面不断闪烁.用 ...

  6. JS分页控件,可用于无刷新分页

    function PagerBar(recordcount, pagesize, pageindex, showpagecount) {     var NumberRegex = new RegEx ...

  7. 无刷新上传Excel后利用JQuery AJAX 显示进度条的实现方式

    1.前台上传页面代码 <divclass="clearfix mywebsite-nodata"><divid="show"><f ...

  8. Asp.Net无刷新分页( jquery.pagination.js)

    采用Jquery无刷新分页插件jquery.pagination.js 实现无刷新分页效果   友情提示:本示例Handler中采用StringBuilder的append方法追加HTML,小数据量可 ...

  9. oracle分页包,Oracle分页获取数据的实现 (包和存储过程)

    本文档主要是介绍针对oracle数据库中利用包和存储过程来实现分页获取数据的内容.其实该存储过程的主题思想及主要实现我也是从网上找的,自己做了整合. 包括包头声明和包体实现部分以及C#代码具体调用部分 ...

最新文章

  1. Android-PullLayout
  2. JSP标准标签库JSTL总结
  3. Linux配置 DNS and BIND服务配置详解--缓存服务器配置 正反向解析配置
  4. 大数据摄取:Flume,Kafka和NiFi
  5. 关于java内容_关于java一些概念性的内容
  6. asp.net 获取全部在线用户_Qamp;A | 在线考试问卷答疑
  7. 1313 质因数分解
  8. SAP License:2021年最新FICO面试答案
  9. 一张以你为中心的地图
  10. 软件过程— 螺旋模型
  11. ctbs 应用服务器,CTBS服务器配置方案-高级版
  12. 华为linux输入法,华为默认手机输入法原来还能这么玩??涨知识了
  13. 字节跳动实习生转正工资_上海实习 | 字节跳动 广告设计实习生
  14. 机器学习和深度学习资源汇总(陆续更新)
  15. Cython使用及pycharm
  16. 破解webstrom2017
  17. 吐血分享:QQ群霸屏技术教程(利润篇)
  18. Android手写签名
  19. 网络基础3【网络层、数据链路层】
  20. 计算机的音乐数字要全是数字,数字中的音乐

热门文章

  1. ubuntu下python3及idle3的安装
  2. wxPython 资料链接
  3. 树莓派蜜罐节点部署实战
  4. iOS版本更新与集成百度地图
  5. java中使用switch case报错case expressions must be constant expressions
  6. [转]Zend Framework + Smarty 应用实例
  7. cocos2dx视频教程进阶篇--第2天--打砖块游戏-box2d物理引擎
  8. 如何导进开源库StickyListHeaders
  9. Django在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete'...
  10. 前端项目集成 stylelint