aspnetpager 详解 (转)
今天闲来无事就学习学习了aspNetPager分页控件的用法:
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现分页导航功能的地方,如为GridView、DataList以及Repeater等数据绑定控件实现分页、呈现自定义的分页数据以及制作图片浏览程序等,因为AspNetPager控件和数据是独立的,因此要分页的数据可以来自任何数据源,如SQL Server、Oracle、Access、mysql、DB2等数据库以及XML文件、内存数据或缓存中的数据、文件系统等等。
1.首先下载aspnetpager控件,我这儿的版本是6.0.0.0 点击下载
2.把控件加到项目中(添加自定义控件的方法),并把它拖放到页面上:
AlwaysShow="True" //总是显示分页控件,即使要分页的数据只有一页
OnPageChanged="AspNetPager1_PageChanged" //分页发生改变时触发事件
UrlPaging="true" //通过URL传递分页信息的方式来分页。如果设为true,禁用ViewState也能达到效果。如果设置为false,禁用了viewstate则无法实现分页.
NumericButtonTextFormatString="[{0}]" //页索引数字显示的格式
ShowCustomInfoSection="Left"> //显示当前页和总页数信息,默认值不显示,为left则将显示在页索引前,为right则为页索引后 </webdiyer:AspNetPager>
3.Page_Load事件:
{
if (!Page.IsPostBack)
{
BindGridView();
}
}
BindGridView方法如下:
{
string sql = "select * from gw_newsletter_group";//自定义的SQL语句
int recordcount;
DataSet ds = GetPage(sql, this.AspNetPager1.CurrentPageIndex, this.AspNetPager1.PageSize,out recordcount);
this.AspNetPager1.RecordCount = recordcount;
this.GridView1.DataSource = ds;
this.GridView1.DataBind();
AspNetPager1.CustomInfoHTML = "记录总数:<b>" + AspNetPager1.RecordCount.ToString() + "</b>";
AspNetPager1.CustomInfoHTML += " 总页数:<b>" + AspNetPager1.PageCount.ToString() + "</b>";
AspNetPager1.CustomInfoHTML += " 当前页:<font color=\"red\"><b>" + AspNetPager1.CurrentPageIndex.ToString() + "</b></font>";
}
其中的GetPage方法代码如下:(GetConnection()是返回一个SqlConnection对象)
/// Get Data By CurrentPage
/// </summary>
/// <param name="sql">SQL</param>
/// <param name="currentPage">current Page</param>
/// <param name="pagesize">Page Size</param>
/// <param name="recordcount">Total Record</param>
/// <returns></returns>
public DataSet GetPage(string sql, int currentPage, int pagesize,out int recordcount)
{
SqlDataAdapter ada = new SqlDataAdapter(sql, GetConnection());
DataSet ds = new DataSet();
int startRow = (currentPage - 1) * pagesize;
ada.Fill(ds, startRow, pagesize, "table");
recordcount = GetPageRecord(sql);
return ds;
}
GetPageRecord方法:(返回总的记录数)
{
sql = System.Text.RegularExpressions.Regex.Replace(sql, "ORDER BY.*", "");
sql = "select count(*) from (" + sql + ") as temp";
SqlCommand cmd = new SqlCommand(sql, GetConnection());
cmd.Connection.Open();
int recordcount = (int)cmd.ExecuteScalar();
return recordcount;
}
这里注意要去掉”Order By“的字符串(聚合函数不能和"ORDER BY"连用)
4.另外:还有个事件:
{
BindGridView();
}
到目前为止就可以运行看到效果:
地址栏显示效果:
注意这里是把属性:urlpaging=true,而且如果禁止了ViewState也能实现。
如果把urlpaging=false 的话
如果禁止了ViewState就无法实现分页功能了。
上面的代码中有这样一句话:
这里就有一个问题是aspNetPage1.PageCount怎样得出来的呢?我们并没有为它赋值。(这里而且这个属性是只读的)
实际上它的值是本身的控件就实现了:我分析觉得代码可能如下:
{
int recordcount = GetPageRecord(sql);//方法见上
int pagecount=recordcount/pagesize;
return (recordcount % pagesize == 0 ? pagecount : pagecount + 1);
}
这样就可以得出到底分页的页数.
最后补充说明:由于我只是初步研究这个控件,不过上面的代码都是经过测试通过的。
而且我还发现这个控件还有很多属性可以改变它的样式外观的。而且还比较灵活的。希望能给朋友们带来一些帮助。
另外如果有什么地方不正确还希望高手能及时的提出来!
转载于:https://www.cnblogs.com/tracy_hh/archive/2009/06/11/1501140.html
aspnetpager 详解 (转)相关推荐
- 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)
首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...
- JVM年轻代,老年代,永久代详解
秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...
- docker常用命令详解
docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...
- 通俗易懂word2vec详解词嵌入-深度学习
https://blog.csdn.net/just_so_so_fnc/article/details/103304995 skip-gram 原理没看完 https://blog.csdn.net ...
- 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法
深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 ...
- CUDA之nvidia-smi命令详解---gpu
nvidia-smi是用来查看GPU使用情况的.我常用这个命令判断哪几块GPU空闲,但是最近的GPU使用状态让我很困惑,于是把nvidia-smi命令显示的GPU使用表中各个内容的具体含义解释一下. ...
- Bert代码详解(一)重点详细
这是bert的pytorch版本(与tensorflow一样的,这个更简单些,这个看懂了,tf也能看懂),地址:https://github.com/huggingface/pytorch-pretr ...
- CRF(条件随机场)与Viterbi(维特比)算法原理详解
摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...
- pytorch nn.LSTM()参数详解
输入数据格式: input(seq_len, batch, input_size) h0(num_layers * num_directions, batch, hidden_size) c0(num ...
- Java集合详解之Map
一.首先看看集合框架体系图 从图中可以看到,Map接口扩展了Iterator接口,关于Iterator接口详解请移步:Iterator接口详解 二.Map是什么? Map<k,v>使用键值 ...
最新文章
- 想要学好Go语言的必须知道的一个小技巧
- 如何为回归问题选择最合适的机器学习方法?
- 新一代組合創新架構師_學習地圖
- java jni 数据类型_【Android JNI】Native层解析Java复杂数据类型HashMap
- 手机做服务器性能咋样,服务器性能不足 怎样才能逼出最强状态
- redis 存入mysql_数据存到redis 过后怎么处理放到数据库?
- linux 格式化u盘_使用Universal USB Installer,打造你的U盘版Linux系统
- (转)软件开发和团队”最小模式”初探2-6人模型(下)
- layui表头样式_Layui表格好看样式
- 智慧职教mooc学院计算机文化基础答案,智慧职教MOOC学院-刷课分析
- 基于matlab的双闭环直流调速系统,基于Matlab双闭环直流调速系统设计与仿真
- 高刷新率电视机有必要吗?
- 1467:Radio Transmission(KMP最小循环节)
- 0813Python总结-tcp,udp及黏包,struck模块
- Failed to parse mapping resource......
- 2020牛客寒假算法基础集训营3——J.牛牛的宝可梦Go【最短路 DP(01背包) 复杂度优化】(附优化分析)
- 银河麒麟V10(Kylin Linux V10)之DBeaver安装
- C语言是一种怎样的语言,零基础学习C语言难不难?
- 高德地图-缩放比例尺控件
- Python学习 读书笔记(1)
热门文章
- git fatal: destination path ‘**‘ already exists and is not an empty directory.解决
- 分享一个小软件fences(桌面管理软件)
- Lua里面new一个对象详细步骤
- ERP生产线管理系统 with WAMP
- Python | NumPy | 不完全总结
- DHCP 报文结构和类型
- 三相PWM整流器(simulink仿真搭建)
- Hexo博客美化之蝴蝶(butterfly)主题魔改
- echarts世界地图(含中国省份地图),中国省份下钻到县,点击按钮返回上一级
- 机器学习基础(二)——训练集和测试集的划分