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;
}
} }

  

这里【下载】。最好是下载这个demo

也可以在这里下载:【cPage】    【cPage-demo】

版权所有,bubufx,禁止转载!

cPage分页,asp.net自定义分页,url传值分页,支持datalist、gridview、Repeater等的更多相关文章

  1. 前端使用AngularJS的$resource,后端ASP.NET Web API,实现分页、过滤

    在上一篇中实现了增删改查,本篇实现分页和过滤. 本系列包括: 1.前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查2.前端使用AngularJS的$re ...

  2. web框架详解之tornado 三 url和分页

    一.代码目录构建 controllers  :处理业务逻辑的 account:处理账户相关的 上面目录作用和内容 controllers 包 :处理业务逻辑的 account:处理账户相关的 home ...

  3. MvcPager 概述 MvcPager 分页示例 — 标准Ajax分页 对SEO进行优化的ajax分页 (支持asp.net mvc)

    该示例演示如何使用MvcPager最基本的Ajax分页模式. 使用AjaxHelper的Pager扩展方法来实现Ajax分页,使用Ajax分页模式时,必须至少指定MvcAjaxOptions的Upda ...

  4. 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 **** ...

  5. Asp.Net中的三种分页方式

    Asp.Net中的三种分页方式 通常分页有3种方法,分别是asp.net自带的数据显示空间如GridView等自带的分页,第三方分页控件如aspnetpager,存储过程分页等. 第一种:使用Grid ...

  6. Asp.Net中的三种分页方式总结

    本人ASP.net初学,网上找了一些分页的资料,看到这篇文章,没看到作者在名字,我转了你的文章,只为我可以用的时候方便查看,2010的文章了,不知道这技术是否过期. 以下才是正文 通常分页有3种方法, ...

  7. Asp.net web form url route使用总结

    asp.net web form 使用URL路由 注不是mvc中的路由 一.前台控件使用路由,通过表达式生成url地址,注意给路由参数赋值,防止使用了其他路由表达式值方式1:<asp:Hyper ...

  8. ASP.NET MVC3 通过Url传多个参数方法

    MVC3通过URL传值,一般情况下都会遇到 [从客户端(&)中检测到有潜在危险的 Request.Path 值]的问题 这个问题的解决方法,我的其他博文已经有了说明,这里给出连接 ; [从客户 ...

  9. ASP.NET 4的Demo实践:URL路由改进支持

    从.NET框架3.5 SP1开始,微软推出了ASP.NET路由支持,从而实现了特定资源的URL与其对应的Web服务器上的物理文件之间的彻底解耦.借助于ASP.NET路由支持,开发人员可以定义一组路由规 ...

随机推荐

  1. BZOJ 1040 树形DP+环套树

    就是有n个点n条边,那么有且只有一个环那么用Dfs把在环上的两个点找到.然后拆开,从这条个点分别作树形Dp即可. #include <cstdio> #include <cstrin ...

  2. 关于easyui遇到的问题

    easyui中的datagrid分页中有时候会碰到context.Request["rows"]的值等于nAn的问题:这是一般都是设置的pageSize的值不在pageList里引 ...

  3. vue学习笔记

    来公司以后就一直在用vue框架,不管是业务代码,还是做vue组件.关于vue有一些点是文档中没有提及的,记录一下以便以后查询- 一.Vue的特点 新一代 Vue.js 框架非常关注如何用极少的外部特性 ...

  4. java中与数据库的连接

    package unitl01; import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet; ...

  5. webclient的简单实用

    这是我在项目中调用别人写好的接口口是使用的1.简单的url传参 List<ArticleModel> result = new List<ArticleModel>(); st ...

  6. Linux标准出错重定向导出

    ~$ ls han >1.txt 2>&1

  7. ftpget 从Windows FTP服务端获取文件

    /********************************************************************************* * ftpget 从Windows ...

  8. JS中直接从java后台获得对象的值(数组的值)

    这里举得例子是:JS直接从后台Contorller中(SpringMVC中的model中)获得数值的值 Contorller 此处将 talentIntegralRecordsDay talentIn ...

  9. java编程经验积累

    1.java批量删除checkbox中选中的对象-CSDN论坛-CSDN.NET-中国最大的IT技术社区  http://bbs.csdn.net/topics/360223125 2.重定向与转发路 ...

  10. TOJ3136

                                                          3136: Ubiquitous Religions 时间限制(普通/Java):2000M ...