cPage分页,asp.net自定义分页,url传值分页,支持datalist、gridview、Repeater等
asp.net分页是最最常用的功能,实现方式也很多,使用不同的控件有不同的分页方式。
下面分享一个我们团队内部使用了多年的一个分页控件cPage,是自己设计编写,没有冗余,简单、快速。
cPage,现在版本是3.2了,很简单的一个分页功能,可以到这里【下载】。最好是下载这个demo。
cPage是asp.net分页控件,也可以叫做分页组件,更确切的应该叫做分页模块,也或者叫做分页通用代码。
cPage,使用url传值实现分页,支持多种asp.net数据控件,如datalist、gridview、Repeater等,支持多种数据源,如SQL Server、Oracle、mysql、DB2等,说的白一点就是能够生成datatable的就可以。
支持url重写(UrlRewrite)分页,比如,常用url分页“info.aspx?p=[#p#]”,url重写“info_[#p#].html”,url中页码是通过“[#p#]”传递的,所以支持任何形式的分页,更多详细请查阅demo。
先来一张效果图:
cPage分装了dll,名称为“cPage.dll”,更重要的是要使用,所以demo很重要。下面是demo的代码:
demo使用了sqlserver2008r2数据库,IDE是vs2010。
demo分页效果图:
sql代码:
CREATE TABLE [info](
[ID] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NULL,
[card] [nvarchar](50) NOT NULL,
[createtime] [datetime] NULL)
demo的页面,cPageList.aspx,代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="cPageList.aspx.cs" Inherits="cPageList" %> <!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>
<style type="text/css">
body ,html { font-size:12px;}
a,table,td,div{font-size:12px; } a:link {text-decoration: none;}
a:visited {text-decoration: none;}
a:hover { text-decoration: none;}
a:active {text-decoration: none;} /*-----------------------------------cPage分页css(v3.2)----------------------------------------------*/
.pagenum{ padding:2px 6px 2px 6px; margin: 0 0 0 4px; text-align:center; border:1px solid #79b7e7;display:inline-block;}
.pagenum:hover{border:1px solid #f5d37c; background-color:#fdf4de ; text-decoration:none; }
.pagecur{background-color:#fdf4de; padding:2px 6px 2px 6px; margin: 0 0 0 4px; text-align:center; font-weight:bold; border:1px solid #f5d37c;display:inline-block;}
.pagecur:hover{border:1px solid #f5d37c; background-color:#fdf4de ; text-decoration:none; }
.pagecolor{color:#3f3f3f;}
.pagecolorc{color:#FF6600;font-weight: bold;}
/*-----------------------------------cPage分页css(v3.2)----------------------------------------------*/
</style>
<script language="javascript" type="text/javascript">
// 鼠标经过改变行的颜色(begin)
if (!objbeforeItem) {
var objbeforeItem = null;
var objbeforeItembackgroundColor = null;
}
function ItemOver(obj) { objbeforeItembackgroundColor = obj.style.backgroundColor;
objbeforeItem = obj;
obj.style.backgroundColor = "#DDF0FF";
}
function ItemOut(obj) {
if (objbeforeItem) {
objbeforeItem.style.backgroundColor = objbeforeItembackgroundColor;
}
}
// 鼠标经过改变行的颜色(end)
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<table width="630" border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse;"
bordercolor="#eaeaea">
<tr style="text-align: center; height: 30px; font-weight: bold;">
<td>
姓名
</td>
<td>
身份证号
</td>
<td>
建立时间
</td>
<td width="130">
操作
</td>
</tr>
<asp:Repeater ID="cPage_repeaterList" runat="server" OnItemCommand="cPage_repeaterList_ItemCommand"
OnItemDataBound="cPage_repeaterList_ItemDataBound">
<ItemTemplate>
<tr style="height: 28px; <%# Container.ItemIndex % 2 == 1 ? "background-color:#F7F6F3": ""%>"
onmouseover="ItemOver(this)" onmouseout="ItemOut(this)">
<td style="padding: 0 0 0 5px">
<%# Eval("name")%>
</td>
<td style="text-align: center;">
<%# Eval("card")%>
</td>
<td style="text-align: center;">
<%# Eval("createtime", "{0:yyyy-MM-dd HH:mm:ss}")%>
</td>
<td style="text-align: center;">
<asp:HiddenField ID="hfID" Value='<%#Eval("ID") %>' runat="server" />
<a href="userop.aspx?act=up&id=<%# Eval("ID")%>&p=<%=p %>" style="color: Red">【修改】</a>
<asp:LinkButton ID="lnkbtnDel" CommandName="del" CommandArgument='<%# Eval("id")%>'
Style="color: Red" runat="server">【删除】</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td style="text-align: left; height: 50px">
<asp:Label ID="lblpage" runat="server"></asp:Label>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
cPageList.aspx.cs代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; using System.Text.RegularExpressions; using System.Data;
using System.Configuration;
using System.Data.SqlClient; using cPage; public partial class cPageList : System.Web.UI.Page
{
public int p = 1; //页码 protected void Page_Load(object sender, EventArgs e)
{
#region 分页获得页码
string _p = Request.QueryString["p"]; if (string.IsNullOrEmpty(_p))
_p = "1"; if (IsIntType(_p))
{
p = Convert.ToInt32(_p);
}
else
{
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "cPageScript", "<script language=\"javascript\" type=\"text/javascript\">alert(\"页码不正确\");history.back();</script>", true);
return;
}
#endregion if (!Page.IsPostBack)
{
cPageBind();
}
} protected void cPageBind()
{
string _url = Request.FilePath + "?p=[#p#]";
int _pageNum = 8; // 中间页码数量
int _pageSize = 10; // 每页记录数
int _beginIndex = 0; // 开始记录
int _endIndex = 0; // 结束记录 string sqlc = "select count(ID) from info";
string sqlorder = "order by ID desc";
string sqltable = "info"; DataTable DTc = GetDt(sqlc); lblpage.Text = mPage.getPage(Convert.ToInt32(DTc.Rows[0][0].ToString()), _pageSize, _pageNum, p, out _beginIndex, out _endIndex, _url); //sql server 分页代码(sql server 2005后版本可用)
string sql = ""; sql = "WITH NoPagedTable AS (" +
"SELECT ROW_NUMBER() OVER (" + sqlorder + ") AS rowIndex, " +
" * " +
" FROM " + sqltable + " " +
")select * from NoPagedTable WHERE rowIndex>=" + _beginIndex + " and rowIndex<=" + _endIndex;
// DataTable DT = GetDt(sql); cPage_repeaterList.DataSource = DT;
cPage_repeaterList.DataBind(); } protected void cPage_repeaterList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemIndex > -1)
{
((LinkButton)e.Item.FindControl("lnkbtnDel")).Attributes["onclick"] = "return confirm('确认要删除吗?');";
}
} protected void cPage_repeaterList_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "del")
{
try
{
long _ID = Convert.ToInt64(((HiddenField)(e.Item.FindControl("hfID"))).Value); string sql = ""; sql = "delete info where ID=" + _ID; int flag = runSQL(sql); if (flag == 1)
{
cPageBind();
}
else
{
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "cPageScript", "<script language=\"javascript\" type=\"text/javascript\">alert(\"删除失败\");history.back();</script>", true); } }
catch
{
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "cPageScript", "<script language=\"javascript\" type=\"text/javascript\">alert(\"数据格式不正确(异常)\");history.back();</script>", true); }
}
} /// <summary>
/// 数据库操作,执行sql语句
/// </summary>
/// <param name="inSQL"></param>
/// <returns></returns>
public int runSQL(string inSQL)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
SqlCommand sqlCmd = new SqlCommand(inSQL, conn); try
{
conn.Open();
sqlCmd.CommandTimeout = 600;
sqlCmd.ExecuteNonQuery();
return 1;
}
catch
{
return 0;
}
finally
{
sqlCmd.Dispose();
conn.Close();
conn.Dispose();
}
} /// <summary>
/// 数据库操作,根据sql获取DataTable
/// </summary>
/// <param name="inSQL"></param>
/// <returns></returns>
public DataTable GetDt(string inSQL)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
SqlDataAdapter sqlDA = new SqlDataAdapter(inSQL, conn);
DataTable outDt = new DataTable(); conn.Open();
sqlDA.SelectCommand.CommandTimeout = 600;
sqlDA.Fill(outDt); sqlDA.Dispose();
conn.Close();
conn.Dispose(); return outDt; } /// <summary>
/// 判断是否是正整数
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static bool IsIntType(string text)
{
Regex reg = new Regex("^[0-9]+$");
Match ma = reg.Match(text);
if (ma.Success)
{
return true;
}
else
{
return false;
}
} }
也可以在这里下载:【cPage】 【cPage-demo】
版权所有,bubufx,禁止转载!
cPage分页,asp.net自定义分页,url传值分页,支持datalist、gridview、Repeater等的更多相关文章
- 前端使用AngularJS的$resource,后端ASP.NET Web API,实现分页、过滤
在上一篇中实现了增删改查,本篇实现分页和过滤. 本系列包括: 1.前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查2.前端使用AngularJS的$re ...
- web框架详解之tornado 三 url和分页
一.代码目录构建 controllers :处理业务逻辑的 account:处理账户相关的 上面目录作用和内容 controllers 包 :处理业务逻辑的 account:处理账户相关的 home ...
- MvcPager 概述 MvcPager 分页示例 — 标准Ajax分页 对SEO进行优化的ajax分页 (支持asp.net mvc)
该示例演示如何使用MvcPager最基本的Ajax分页模式. 使用AjaxHelper的Pager扩展方法来实现Ajax分页,使用Ajax分页模式时,必须至少指定MvcAjaxOptions的Upda ...
- PHP+jQuery 长文章分页类 ( 支持 url / ajax 分页方式 )
/* ******* 环境:Apache2.2.8 ( 2.2.17 ) + PHP5.2.6 ( 5.3.3 ) + MySQL5.0.51b ( 5.5.8 ) + jQuery-1.8 **** ...
- Asp.Net中的三种分页方式
Asp.Net中的三种分页方式 通常分页有3种方法,分别是asp.net自带的数据显示空间如GridView等自带的分页,第三方分页控件如aspnetpager,存储过程分页等. 第一种:使用Grid ...
- Asp.Net中的三种分页方式总结
本人ASP.net初学,网上找了一些分页的资料,看到这篇文章,没看到作者在名字,我转了你的文章,只为我可以用的时候方便查看,2010的文章了,不知道这技术是否过期. 以下才是正文 通常分页有3种方法, ...
- Asp.net web form url route使用总结
asp.net web form 使用URL路由 注不是mvc中的路由 一.前台控件使用路由,通过表达式生成url地址,注意给路由参数赋值,防止使用了其他路由表达式值方式1:<asp:Hyper ...
- ASP.NET MVC3 通过Url传多个参数方法
MVC3通过URL传值,一般情况下都会遇到 [从客户端(&)中检测到有潜在危险的 Request.Path 值]的问题 这个问题的解决方法,我的其他博文已经有了说明,这里给出连接 ; [从客户 ...
- ASP.NET 4的Demo实践:URL路由改进支持
从.NET框架3.5 SP1开始,微软推出了ASP.NET路由支持,从而实现了特定资源的URL与其对应的Web服务器上的物理文件之间的彻底解耦.借助于ASP.NET路由支持,开发人员可以定义一组路由规 ...
随机推荐
- FFMpeg的码率控制
mediaxyz是一位研究ffmpeg有三年的高人了,这几天一直在折腾ffmpeg中的x264,就是不知道该如何控制码率,主要是参数太多,也不知道该如何设置,在google上search了一下,这方面 ...
- 利用NABCD模型进行竞争性需求分析
微博的NABCD模型 N-Need:毫无疑问,当今的中国普通民众是有这点需求的,在上个世纪中国民众的休闲娱乐方式更多的停留在以电视传媒为主的娱乐方式,而进入21世纪以来中国民众的娱乐中心向互联网转移, ...
- select2插件
引入select2插件<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min. ...
- JAVA(1)
java开发第一步就是学习相关知识,打牢基础是关键,下面就和小编我一起从java基础学起吧,一起加油! java方向主要包括三大块: java se 桌面开发 java ee web开发 java m ...
- 使用C#程序处理PowerPoint文件中的字符串
最近, 有同事偶然发现Microsoft Office PowerPoint可以被看作是一个压缩包,然后通过WinRAR解压出来一组XML文件.解压出来的文件包括: 一个索引文件名称为:[Conte ...
- Java高级规范之二
二十一.提交java代码前应该检查是否有没用的语句,如:System.out.println(); jsp页面上面是否有alert调试信息 不规范示例:暂无 规范实例:暂无 解析:因为如果保留了有可能 ...
- Fiddler2 主菜单
Fiddler2 主菜单 六个主菜单分别是: 文件(File) Capture Traffic ——启用捕获功能,快捷键 F12 此功能的开启/关闭状态,程序安装后默认是开启的.可以在 Fiddler ...
- ipython notebook 显示图
import random import matplotlib from pylab import * %pylab inline list = [random.random() for i in r ...
- C#编程语言与面向对象——类与对象
由于ASP.NET技术是全面向对象的,因此,要掌握这一技术,必须具备有扎实的面向对象理论基础 使用C#编程,所有的程序代码几乎都放在类中,不存在独立于类中之外的函数,因此,类是面向对象编程的基本单元 ...
- android环境配置
1.计算机右键点击属性 2.点击高级系统设置 3.选择高级——>选择环境变量 4.点击系统变量下的新建 1)新建ANDROID_HOME:你的sdk所在的目录 2)新建JAVA_HOME:C:\ ...