完成图:

先进入模板编辑模式,选择【PagerTemplate】,添加自己所需的导航控件

列入这样的,上一页和下一页和GO使用【LinkButton】,也可使用其他的控件,【注:LinkButton 在编译后是HTML的a标签】,

或是复制下面代码,到GridView的 </Columns>后面,这个代码里有第一页和最后一页禁用的出来,

  <PagerTemplate>当前第:<asp:Label ID="pageNumber" runat="server" Text="1"></asp:Label>页/共:<asp:Label ID="totalNumber" runat="server" Text="1"></asp:Label>页<asp:LinkButton ID="LinkButtonFirstPage" runat="server" CommandArgument="First" CommandName="Page" >首页</asp:LinkButton><asp:LinkButton ID="LinkButtonPreviousPage" runat="server" CommandArgument="Prev" CommandName="Page"  enabled="<%#PageIndex>1 %>">上一页</asp:LinkButton><asp:LinkButton ID="LinkButtonNextPage" runat="server" CommandArgument="Next" CommandName="Page"  enabled="<%#PageIndex<PageCount%>">下一页</asp:LinkButton><asp:LinkButton ID="LinkButtonLastPage" runat="server" CommandArgument="Last" CommandName="Page" >尾页</asp:LinkButton>转到第<asp:DropDownList ID="pageList" runat="server" style="color:black"></asp:DropDownList>页<asp:LinkButton ID="btnGo" runat="server" CausesValidation="False" CommandArgument="-3" CommandName="Page" Text="GO"/></PagerTemplate>    

这样做后,还不行,退出编辑,让他显示整个GridView后,选择它,在右下角,更改如下两个值,【AllowCustomPaging】【AllowPaging】,

当做完这些,它还不会显示你刚刚所做的这些,甚至打开浏览器调试都看不到,

这里有一句代码,在viewDate()方法里加上就可以显示了,每次绑定数据后,让底部我们设置的东西显示出来。

 codeTable.BottomPagerRow.Visible = true;

到这部结果为

这里的页数使用ViewState[]存储,因为,在点击控件后,会进行一个提交,控件默认submit的,提交后的变量值都会被清空,而ViewState可以存储我们的变量值。

/// <summary>/// 总页数/// </summary>protected int PageCount{get { return (int)ViewState["PageCount"]; }set { ViewState["PageCount"] = value ; }}/// <summary>/// 当前页索引/// </summary>protected int PageIndex{get { return (int)ViewState["PageIndex"]; }set { ViewState["PageIndex"] =value; }}   

这样使用get和set,可以省去后续的很多代码,还会是代码看起来更简洁。

现在,我们试着将上一页和下一页的功能完善,在首页和上下页等控件上加上:onClick="Page_OnClick"(这里一定要加),然后CommandArgument="Next",在Page_OnClick事件中,我们来判断CommandArgument的值,PageIndex是当前页面,PageCount是总页码,当点击页面上的上一页或下一页,就会进入这个方法,然后页面加或减,再绑定数据,

  protected void Page_OnClick(object sender, EventArgs e){LinkButton btn = sender as LinkButton;string commandName = btn.CommandArgument.ToString().ToLower();switch (commandName){case "next":++PageIndex;break;case "prev":--PageIndex;break;case "first":PageIndex = 1;break;case "last":PageIndex = PageCount;break;case "-3":int p = Convert.ToInt32(((DropDownList)codeTable.BottomPagerRow.FindControl("pageList")).SelectedValue);PageIndex = p;break;}viewData();}

我们在点击控件后,页面提交跳转,要从新绑定数据,然后在绑定的同时要讲页码等信息更改。在viewDate()方法最后添加下面两句。

 ((Label)codeTable.BottomPagerRow.FindControl("pageNumber")).Text = PageIndex + "";((Label)codeTable.BottomPagerRow.FindControl("totalNumber")).Text = PageCount + "";

首页和最后一页是第一页,和最大数据页数,最后我们再做一个跳转页面的,需要一个dropdownList,和一个linkButton,页数的集合,这里我们有两种处理

一是在viewData里添加,二是在GridView的DataBound方法里添加,两个的作用差不多,viewData是我们自己绑定数据,只要加载最后,是可以完成的,这里我们使用第二种DataBound方法,它是在GridView数据全部绑定完成后自动执行的一个方法,

 protected void codeTable_DataBound(object sender, EventArgs e){((DropDownList)codeTable.BottomPagerRow.FindControl("pageList")).Items.Clear();for (int i = 1; i <= PageCount; i++)((DropDownList)codeTable.BottomPagerRow.FindControl("pageList")).Items.Add(new ListItem(i + "", i + ""));}

不要忘了,在添加时要清空之前的添加的子项。

然后就是跳转,我们要获取到下拉框选中的值,然后进行跳转,这句的作用是找到GridView的底部的Pager行,并在这行中找到“pageLIst”这个控件,再获取他的值,我只有用这句才能获取到值,如果大家有其他方式获取到,可以忽略。完整的代码见上面Page_OnClick方法。其第一页和最后一页的禁用控制我是写在页面上的,可以看上面有。

int p = Convert.ToInt32(((DropDownList)codeTable.BottomPagerRow.FindControl("pageList")).SelectedValue);

到这里已完成上下页和首页等的切换,下篇我们接着完成操作的功能。

GridView数据库分页+自定义分页导航(二):自定义分页导航。首页、上一页、下一页、尾页和跳转相关推荐

  1. java mysql 分页计算公式_关于Java的分页算法,急!

    展开全部 使用分页类,直接调用就可以,代码如下: package com.godwin.news.util; import java.io.UnsupportedEncodingException; ...

  2. GridView自定义分页样式(上一页,下一页,到第几页)(新手教程)

    今天要为网站做一个文章列表,发现GridView的分页样式很难看,于是结合网上的例子,自己做了一个.不是很美观,不过还是很实用的,先看下效果吧,如图(1).演示地址http://www.veryam. ...

  3. 帝国cms搜索php分页,帝国cms V7.2自定义分页(列表分页,内容分页)样式步骤

    [1]自己修改帝国cms默认的分页样式(css),这样做的好处是你不用去改动帝国的核心文件,方便以后升级. [2]自己动手去修改帝国的分页(php+css),帝国的分页在e>class>下 ...

  4. SpringBoot学习之旅(七)---JPA进阶篇之自定义查询、修改、分页

    文章目录 前言 源码下载 其他文章 查询关键字 自定义Select和Update 分页及自定义分页 自定义分页 分页查询的业务代码 前言 前一节SpringBoot学习之旅(六)-JPA操作MySql ...

  5. ajax获取数据自动创建分页,支持自定义显示数据量以及分页数量

    工作中遇到这一需求,时间仓促赶着演示,只用了1个多小时随随便便做的,满足自定义以及同页面多块分页同时进行,多的不说,直接上demo,工作忙,没时间细化,希望哪位路过优化细化后共享下,最后附上使用说明 ...

  6. jsp中用自定义标签实现简单的分页

    昨天学了一天的自定义标签,大概了解了其原理,就写了一个实现简单分页的程序. 1.它是基于我自己写的分页类(Pager)的,其代码如下: package com.neusoft.training.dat ...

  7. Django 基础(12)-Django drf 分页查询(批量查询)、自定义分页器

    文章目录 Django drf 分页查询(批量查询) PageNumberPagination:普通分页 Django 自定义分页器 自定义批量查询的返回结构 LimitOffsetPaginatio ...

  8. C#自定义用户控件之分页

    形形色色的分页控件很多,有些可满足我们的要求,但有些却不一定,下面是我在工作当中遇到的问题而随手写了个能满足某些功能的自定义分页控件: 控件源代码: <%@ Control Language=& ...

  9. ObjectDataSource与GridView配合使用经验总结系列二:分页

    令我使用ObjectDataSource配合GridView显示数据的最重要的原因之一就是ObjectDataSource的分页功能,其实GridView本身就自带一个分页功能,但是GridView自 ...

最新文章

  1. 如何设置网页自动刷新(JSP,JS,HTML)
  2. python 导入自定义模块
  3. 无锡初一计算机试题,2015年无锡市初中信息技术考查选择题.doc
  4. java对象转json字符串日期格式_fastJSON字符串类型数据中的日期转换为Java bean的日期对象...
  5. php httprequest 安装,php httpRequest(php实现httpRequest)
  6. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
  7. CVPR 2018 | TVNet:可端到端学习视频的运动表征
  8. 【C语言】第四章 逻辑判断与选择结构 题解
  9. MySQLBackup 8.0.26 备份与恢复
  10. BZOJ2654: tree 二分答案+最小生成树
  11. JS 延时函数 setTimeout 或者 rxjs 写法
  12. 机器学习——sklearn实现决策树(隐形眼镜预测和鸢尾花分类)
  13. openGL细分着色器详解
  14. pr2020视频剪辑出现闪烁抖动
  15. 如何写好一份 30 K offer 的简历(建议收藏)
  16. coldfusion_ColdFusion MX 7功能之旅
  17. 轻量级图片批量上传JS插件 imgFileupload.js
  18. Android 优秀的开源库
  19. STM32与人体红外感应模块的简单使用——入门级
  20. 微信支付成功后服务器宕机了,今天微信出现大面积宕机,可能与支付宝有关?...

热门文章

  1. 很全面的5G技术基础知识PPT(三)
  2. Jupyter如何切换工作路径至E盘文件夹
  3. 蓝桥杯单片机省赛题目《全集》之第十届省赛
  4. 【Autopsy数字取证篇】Autopsy案例创建与镜像分析详细教程
  5. HC-05蓝牙模块,在AT指令模式时输出AT+NAME?无应答问题
  6. Home Ftp Server FTP软件
  7. Qt QuaZip 解压zip文件
  8. 我的HarmonyOS实战 — 一篇文章讲明白什么是鸿蒙2.0服务卡片
  9. vue项目接入视频监控系列-------播放器的选择
  10. JAVA I/O流 字符流和字节流、节点流和处理流(包装流、过滤流)、缓冲流