ASP.net 简单分页的实现

本文介绍了一种基于ASP.NET的简单分页技术实现方法,通过计算起始和结束索引,从数据库中获取指定范围的数据,并生成页码条,适用于小规模数据集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在自己的项目中有一个文章的管理页面需要用到分页,

这种分页方法是在黑马的一个视频中看到的,便用在了自己的项目中。

但是使用控件实在是太丑,虽然我写的也丑......。

gridview 控件提供的分页已经足够强大,微小的数据量根本不需要在意。

而本文所介绍的分页一样无法应对大量的数据,只是一种简单的实现。

 

 

通过传入的 请求页码 以及程序设定好的 每页显示的数量 ,计算出一页数据的开始数与结束数,调用 GetPageList 方法,返回泛型数据集合。

 1         //pageindex:页码,paesize:每页数量
 2 
 3 
 4         public static List<ArticleBLL> GetArticleMenu(int pageindex, int pagesize)
 5         {
 6             int start = (pageindex - 1) * pagesize + 1;
 7             int end = pagesize * pageindex;
 8             List<ArticleBLL> list = GetPageList(start, end);
 9             return list;
10         }

 

 


GetPageList 方法,接收到上面方法的计算结果,查询数据然后返回。

 1         // 传入 开始id 以及 结束id 获得数据列表
 2 
 3 
 4         private static List<ArticleBLL> GetPageList(int start, int end)
 5         {
 6             string sqlstring = "select * from (select row_number() over(order by Time desc) as num,* from Article)as t where t.num >= @start and t.num <= @end";
 7             SqlParameter[] para = {
 8                 new SqlParameter ("@start",start),
 9                 new SqlParameter("@end",end)
10             };
11             DBHelp db = new DBHelp();
12             DataTable dt = db.GetDataTable(sqlstring, para);
13             List<ArticleBLL> list = null;
14             if (dt.Rows.Count > 0)
15             {
16                 list = new List<ArticleBLL>();
17                 ArticleBLL article = null;
18                 foreach (DataRow row in dt.Rows)
19                 {
20                     article = new ArticleBLL();
21                     LoadEnity(row, article);
22                     list.Add(article);
23                 }
24             }
25             return list;
26         }

 

转化数据。

1         //转化数据
2         private static void LoadEnity(DataRow row, ArticleBLL article)
3         {
4             article.ID = Convert.ToInt32(row["ID"]);
5             article.Title = Convert.ToString(row["Title"]);
6             article.Text = Convert.ToString(row["Text"]);
7             article.Time = Convert.ToDateTime(row["Time"]);
8         }

 

 

生成页码条

我使用的前端框架是 Bootstrap v2 在这里直接将样式写在输出里了。

 

 1         //产生数字页码条
 2         //页面产生10个数字页码
 3         //pageindex  传来的请求页码值
 4         //articlemenucount  总页码数量
 5         //pagesize  每页数量值
 6 
 7 
 8         public static string GetPageBar(int pageindex,int pagesize)
 9         {
10             int articlemenucount = GetArticleMenuCount(pagesize);
11             if (articlemenucount == 1)
12             { return string.Empty; }
13             int start = pageindex - 5;
14             if (start < 1)
15             { start = 1; }
16             int end = start + pagesize - 1;
17             if (end > articlemenucount)
18             { end = articlemenucount; }
19             StringBuilder pagebar = new StringBuilder();
20             pagebar.Append("<div class=\"pagination pagination-right\"><ul>");
21             for (int i = start; i <= end; i++)
22             {
23                 if (i == pageindex)
24                 { pagebar.Append("<li class=\"active\"><a>" + i +"</a></li>"); }
25                 else
26                 { pagebar.Append(string.Format("<li><a href='arctilemenu.aspx?page={0}'>{0}</a></li>",i)); }
27             }
28             pagebar.Append("</ul></div>");
29             return pagebar.ToString();
30         }

 


这两个方法求出数据的总条数,然后计算全部的页数。供上面方法计算页码条页码。

1         //求总页数
2 
3 
4         private static int GetArticleMenuCount(int pagesize)
5         {
6             int rowcount = GetRowCount();
7             int pagecount = Convert.ToInt32(Math.Ceiling((double)rowcount / pagesize));
8             return pagecount;
9         }

 

1         //求出总记录数
2         private static int GetRowCount()
3         {
4             string sqlstring = "select count(*) from Article";
5             DBHelp db = new DBHelp();
6             return Convert.ToInt32(db.GetInt(sqlstring));
7         }

 

 

 在调用时只需要传入每页的数据条数以及当前请求的页码就可以了。

 

 最后,真的是好丑啊。

转载于:https://www.cnblogs.com/Aaxuan/p/6676815.html

再次声明 千万不要把XiaoQi.dll 跟 XiaoQi.XML 给分开 2013年3月8号 修复了很多bug 调整了源代码 添加的时候 一定要引用 不要直接复制DLL 不然没有方法注释 最强大分分页控件 华丽的分页控件 实用的分页控件 有最新最实用的方法 联系小柒 下面是 AspNetHelp 类 方法概述 ///Show()弹出对话框 ///重载Show()弹出对话框 并且跳转界面 ///ShowJavascript()执行javascript脚本 ///FileDelete()给出文件虚拟路径删除文件 ///FileSize()获取上传文件大小 ///FileUpload()文件上传 路径upload/ 自动重命名 ///FileDownload()文件下载 调用方法如 FileDownload(Response,Server,文件虚拟路径) ///FileTxtWrite()写入TXT文本 给出要创建Txt 文本的地址 ///FileTxtReader()读取TXT文本 Txt 文本的地址 返回一个数组 每一行为数组里的一个元素 ///StringEncrypt() DES字符串加密中文不可以加密 ///StringDecrypt()DES解密字符串 ///StringMD5Encrypt()MD5加密 ///StringPYChar()单个汉字返回该汉字首字母 ///StringRandom()生成指定位数的随机数 ///StringEdit()给出指定字符串长度多少位后用点显示... ///StringReplaceSpace()替换文本中的空格和换行 ///StringColor()改变字的颜色 ///StringNull()当对象是空的时候 转为空字符串 ///StringConvert()汉字转拼音 ///StringNumber()数字转换中文 ///StringRep()url参数为中文时候转换加密 ///StringRes()url参数为中文时候转换解密 ///ShowWindowForm()弹出新窗口页面 ///ShowFormModalDialog()弹出模式窗口页面 ///SqlGetMaxID()给出表名列名 int类型 查询出最大列值+1 适用于主键 ///SqlGetSingle()执行一条计算查询结果语句,返回查询结果(object)。 ///SqlExecute()执行SQL语句,返回影响的记录数 ///SqlRunStr()执行SQL语句,不返回影响的记录数 ///SqlRunReturn()执行SQL语句,并返回第一行第一列结果 ///SqlGetReader()获得SqlDataReader对象 使用完须关闭DataReader,关闭数据库连接 ///SqlGetTable()执行查询语句,返回DataTable ///SqlDataSet()执行查询语句,返回DataSet ///SqlIsCunZai()执行Sql 语句查询是否有数据 如果没有返回假 ///SqlRunProc()执行存储过程 ///DataBindDropDownListDefault()DropDownList控件绑定 带默认选择项 如"请选择" ///DataBindDropDownList()DropDownList控件绑定 不带默认选择项 ///DataBindRadioButtonList()RadioButtonList控件绑定 默认第一个选中 ///DataBindCheckBoxList()CheckBoxList控件绑定 ///ElseIpAddr()调用此方法 返回当前登录的省市IP地址 ///ElseDataTimeIng()返回本地电脑的当前日期的年月日时分秒 动态的显示 JS实现 ///ElsePageLoad()页面加载数据加载完成呈现页面 ///ElseCkeck()返回页面验证码图片 使用方法:单独创建一个页面 在首次加载事件里写 AspNetHelp.ElseCkeck(Page); 在使用验证码的页面直接写 img src="这个页面的路径" 注意验证码保存在 Session["CheckCode"]中 这里是区分大小写的 ///ElseColorRGB()由于QQ截图的取色会出现RGB的颜色 这里能转换成16进制 分页控件详情请看内置文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值