本文转自: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 = ;
public static int _startSize = ;
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. nodejs利用ajax实现网页无刷新上传图片

    nodejs利用ajax实现网页无刷新上传图片 标签(空格分隔): nodejs 通常情况下上传图片是要通过提交form表单来实现的,但是这又不可避免的产生了网页转. 利用ajax技术和FormDat ...

  2. 扩展GridView实现的一个自定义无刷新分页,排序,支持多种数据源的控件TwfGridView

    最近项目View层越来越趋向于无刷新化,特别是数据展示方面,还要对Linq有很好的支持.在WebFrom模式的开发中,GridView是一个功能很强大,很常用的控件,但是他也不是完美的,没有自带的无刷 ...

  3. 无刷新分页 jquery.pagination.js

     无刷新分页 jquery.pagination.js 采用Jquery无刷新分页插件jquery.pagination.js实现无刷新分页效果 1.插件参数列表 http://www.dtan.so ...

  4. 自己动手用Javascript写一个无刷新分页控件

    .NET技术交流群:337901356 ,欢迎您的加入! 对 于一个用户体验好的网站来说,无刷新技术是很重要的,无刷新,顾名思义,就是局部刷新数据,有用过Asp.net Web Form技术开发网页的 ...

  5. 利用Content-disposition实现无刷新下载图片文件

    今天在使用 tinypng.com 这个在线压缩图片的网站时,对其处理完图片后,可以无刷新下载图片感到好奇,于是了解了一下相关实现.无刷新下载可以利用MIME type或者设置Content-disp ...

  6. Oracle 分页原理

    oracle rownum 及分页处理的使用方法 在实际应用中我们经常碰到这样的问题,比如一张表比较大,我们只要其中的查看其中的前几条数据,或者对分页处理数据.在这些情况下我们都需要用到rownum. ...

  7. 【SQL】Oracle分页查询的三种方法

    [SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...

  8. Sqlserver2008和Oracle分页语句

    SqlServer 分页语句 select StuID ,StuNo,StuName,Age,Sex, ClassName ClassName from (select *, row_number() ...

  9. mysql和oracle 分页查询(转)

    最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...

随机推荐

  1. vs2012 编译运行报 项目程序包Dsp.Bds.dll还原失败,找不到版本xxxxxx的程序包问题的解决方法

    原先vs2012程序运行项目是可以了,不会出现程序包Dsp.Bds.dll还原失败,找不到版本未2.0.1.0的程序包问题, 但是项目可以正常运行,每次调试看到下面一片红感觉不舒服 原因:可能当时我看 ...

  2. visual studio 2013 配置开发环境

    https://www.visualstudio.com/explore/xamarin-vs http://sourceforge.net/projects/easyeclipse/files/?s ...

  3. 在博客中使用MathJax写数学公式

    前言 总结一些在博客园使用MathJax写数学公式的经验. 博客园 设置使用数学公式 进入你的博客:管理 > 选项 里面有个启用数学公式支持,选上后保存. 这时,你就可以在你的博客里写数学公式了 ...

  4. SQL Server 全局变量

    SQL Server中所有全局变量都使用两个@符号作为前缀 --1.@@error 最后一个T-SQL错误的错误号(目的是或得违反约束的错误号) insert into Subject values( ...

  5. 每个软件都自己把操作系统的host配置项加到内存中供频繁调用

    nginx的转发,http_pass 转发到一个域名passport.ab.cn 那具体是到哪台机器上. 其实可以通过/etc/hosts文件来配置的. 可以理解,这个hosts文件是操作系统级别的, ...

  6. java.util.TimeZone 新加方法 getTimeZone(ZoneId zoneId) 导致的问题

    最近接受的项目中用spring配置了一个TimeZone对象: <bean id ="timeZone4Job" class="java.util.TimeZone ...

  7. winform 属性

    WinForm为客户端程序必须在.NET Framework框架上运行 一.常用属性: 布局: AutoScroll:当控件内容超出可见区域是否显示滚动条: Autosize:当控件内容有超出时是否自 ...

  8. HTML5&CSS3经典动态表单-2

    上一个demo效果没出来!实际如下 代码没问题.不知道为啥,展示的demo里光标获取焦点的时候不会有如下效果

  9. JS写返回上一级

    应产品需求,自己的网站上要有返回上一级的需求,几经周折,做个小总结. (1): $("XX").on("click",function(){      wind ...

  10. DownloadManager 的使用

    一.基本概念    1.DownloadManager是Android 2.3A (API level 9) 引入的,基于http协议,用于处理长时间下载. 2.DownloadManager对于断点 ...