什么是“分页展示”?

分页展示就是将庞大的数据分成若干页,每页展示若干条数据,向用户展示数据

流程:客户端浏览器向服务器发送查询请求 → 服务器从数据库查询数据 → 服务器转换成代码向客户端发回 → 客户端浏览器编译代码进行展示

每次查询全部数据时,服务器查询数据量大、网络传输数据了量大、浏览器编译代码数据量大,造成速度缓慢

分页展示优势:减少查询量,以减少发送、查询、返回、编译时间,提供工作效率

====================================================

从数据库查询Car表中所有信息进行展示,并做功能性按钮如下:

前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server"> <%--信息展示区--%>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table style="width:100%;text-align:center;">
<tr style="background-color:navy;color:white;">
<td>Code</td>
<td>Name</td>
<td>Brand</td>
<td>Time</td>
<td>Oil</td>
<td>Powers</td>
<td>Exhaust</td>
<td>Price</td>
<td>Pic</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr style="background-color:paleturquoise;">
<td><%#Eval("Code") %></td>
<td><%#Eval("Code") %></td>
<td><%#Eval("Brand") %></td>
<td><%#Eval("Time") %></td>
<td><%#Eval("Oil") %></td>
<td><%#Eval("Powers") %></td>
<td><%#Eval("Exhaust") %></td>
<td><%#Eval("Price") %></td>
<td><%#Eval("Pic") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<%--功能区--%>
当前第【<asp:Label ID="Label_NowPage" runat="server" Text=""></asp:Label>】页&nbsp;&nbsp;
共【<asp:Label ID="Label_MaxPage" runat="server" Text="加载中..."></asp:Label>】页&nbsp;&nbsp;
<asp:LinkButton ID="btn_First" runat="server">首页</asp:LinkButton>&nbsp;&nbsp;
<asp:LinkButton ID="btn_prev" runat="server">上一页</asp:LinkButton>&nbsp;&nbsp;
<asp:LinkButton ID="btn_next" runat="server">下一页</asp:LinkButton>&nbsp;&nbsp;
<asp:LinkButton ID="btn_last" runat="server">末页</asp:LinkButton>&nbsp;&nbsp;
<asp:DropDownList ID="Pages" runat="server"></asp:DropDownList>&nbsp;&nbsp;
<asp:Button ID="btn_go" runat="server" Text="跳转" />&nbsp;&nbsp; </form>
</body>
</html>

前台代码

此时是所有的数据,共16条信息

1、实现每页展示4信息,共5页

后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page
{
CarData cd = new CarData();
int Pcount = ;//每页要展示的信息数 protected void Page_Load(object sender, EventArgs e)
{ if (!IsPostBack)
{
//查询所有数据
List<Car> clist = cd.Select(Pcount);
//显示总页数
Label_MaxPage.Text = cd.MaxPageCount(Pcount).ToString();
//Repeater绑定数据
Repeater1.DataSource = clist;
Repeater1.DataBind();
}
}
}

每页显示4条信息

2、实现点击下一页进行信息更换

//下一页
void btn_next_Click(object sender, EventArgs e)
{
int NextPage = Convert.ToInt32(Label_NowPage.Text) + ;
Repeater1.DataSource = cd.Select(Pcount, NextPage);
Repeater1.DataBind();
Label_NowPage.Text = NextPage.ToString();//改变当前页码
}

点击下一页

问题:“下一页”可以无限点击,会超过最大页码

方法:

//下一页
void btn_next_Click(object sender, EventArgs e)
{
int NextPage = Convert.ToInt32(Label_NowPage.Text) + ;
//方法一:如果是最后一页,跳出方法
if (NextPage > cd.MaxPageCount(Pcount))
{
NextPage--;
return;
}
Repeater1.DataSource = cd.Select(Pcount, NextPage);
Repeater1.DataBind(); Label_NowPage.Text = NextPage.ToString();//改变当前页码 }

方法一

//下一页
void btn_next_Click(object sender, EventArgs e)
{
int NextPage = Convert.ToInt32(Label_NowPage.Text) + ; //NowPage += 1;//下一页的页号
Repeater1.DataSource = cd.Select(Pcount, NextPage);
Repeater1.DataBind(); Label_NowPage.Text = NextPage.ToString();//改变当前页码 //方法二:如果是最后一页,使“下一页”不可用
if (NextPage >= cd.MaxPageCount(Pcount))
{
btn_next.Enabled = false;
}
}

方法二

同理设置“上一页”方法

int NextPage = Convert.ToInt32(Label_NowPage.Text) - ;

        Repeater1.DataSource = cd.Select(Pcount, NextPage);
Repeater1.DataBind(); Label_NowPage.Text = NextPage.ToString();//改变当前页码 //方法二:如果是第一页,使“上一页”不可用
if (NextPage <= )
{
btn_prev.Enabled = false;
}

上一页

问题:“上一页”初始为不可用,并且当点击“下一页”到最后一页时,“下一页”也变为不可用

方法:只要点击“上一页”,就把“下一页”变为可用,只要点击“下一页”,就把“上一页”变为可用

3、制作“首页”、“末页”功能

//首页
void btn_First_Click(object sender, EventArgs e)
{
Repeater1.DataSource = cd.Select(Pcount, );
Repeater1.DataBind(); Label_NowPage.Text = "";//改变当前页码 //“上一页”按钮变为不可用
btn_prev.Enabled = false; //“下一页”按钮变为可用
btn_next.Enabled = true;
}

首页

//末页
void btn_last_Click(object sender, EventArgs e)
{
Repeater1.DataSource = cd.Select(Pcount, cd.MaxPageCount(Pcount));
Repeater1.DataBind(); Label_NowPage.Text = cd.MaxPageCount(Pcount).ToString();//改变当前页码 //“上一页”按钮变为可用
btn_prev.Enabled = true; //“下一页”按钮变为不可用
btn_next.Enabled = false;
}

末页

4、制作“跳转”功能

(1)页码下拉列表及初始选中项

//页码下拉列表添加数据
for (int i = ; i <= cd.MaxPageCount(Pcount); i++)
{
Pages.Items.Add(i.ToString());
}
//页码下拉列表默认选中“1”
Pages.SelectedValue = "";

页码下拉列表及初始选中项

(2)实现跳转功能

//跳转
void btn_go_Click(object sender, EventArgs e)
{
//获取被选中的页号
int ToPage = Convert.ToInt32(Pages.SelectedValue);
//改变当前页码
Label_NowPage.Text = ToPage.ToString();
//查询并绑定数据
List<Car> lc = cd.Select(Pcount, ToPage);
Repeater1.DataSource = lc;
Repeater1.DataBind(); //首先设置所有按钮可用
btn_prev.Enabled = true;
btn_next.Enabled = true;
//若是首页或末页则设置“上一页”、“下一页”按钮不可用
if (Pages.SelectedValue == "")
btn_prev.Enabled = false;
if (Pages.SelectedValue == cd.MaxPageCount(Pcount).ToString())
btn_next.Enabled = false;
}

跳转功能

(3)实现点击“首页”、“上一页”、“下一页”、“末页”时页码下拉列表跟随改变

===================================================

后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page
{
CarData cd = new CarData();
int Pcount = ;//每页要展示的信息数
//int NowPage = 1;//首次展示为第一页 protected void Page_Load(object sender, EventArgs e)
{ if (!IsPostBack)
{
//查询前五条数据
List<Car> clist = cd.Select(Pcount, ); //Repeater绑定数据
Repeater1.DataSource = clist;
Repeater1.DataBind(); //显示总页数
Label_MaxPage.Text = cd.MaxPageCount(Pcount).ToString();
//设置初始“上一页”不可用
btn_prev.Enabled = false; //页码下拉列表添加数据
for (int i = ; i <= cd.MaxPageCount(Pcount); i++)
{
Pages.Items.Add(i.ToString());
}
//页码下拉列表默认选中“1”
Pages.SelectedValue = "";
} btn_First.Click += btn_First_Click;//首页
btn_prev.Click += btn_prev_Click;//上一页
btn_next.Click += btn_next_Click;//下一页
btn_last.Click += btn_last_Click;//末页
btn_go.Click += btn_go_Click;//跳至
}
//首页
void btn_First_Click(object sender, EventArgs e)
{
Repeater1.DataSource = cd.Select(Pcount, );
Repeater1.DataBind(); //改变当前页码
Label_NowPage.Text = "";
//改变页码下拉列表的选中项
Pages.SelectedValue = Label_NowPage.Text; //“上一页”按钮变为不可用
btn_prev.Enabled = false; //“下一页”按钮变为可用
btn_next.Enabled = true;
}
//上一页
void btn_prev_Click(object sender, EventArgs e)
{
int NextPage = Convert.ToInt32(Label_NowPage.Text) - ; Repeater1.DataSource = cd.Select(Pcount, NextPage);
Repeater1.DataBind(); //改变当前页码
Label_NowPage.Text = NextPage.ToString();
//改变页码下拉列表的选中项
Pages.SelectedValue = Label_NowPage.Text; //方法二:如果是第一页,使“上一页”不可用
if (NextPage <= )
{
btn_prev.Enabled = false;
} //“下一页”按钮变为可用
btn_next.Enabled = true;
}
//下一页
void btn_next_Click(object sender, EventArgs e)
{
int NextPage = Convert.ToInt32(Label_NowPage.Text) + ; ////方法一:如果是最后一页,则跳出方法
//if (NextPage > cd.MaxPageCount(Pcount))
//{
// NextPage--;
// return;
//} //NowPage += 1;//下一页的页号
Repeater1.DataSource = cd.Select(Pcount, NextPage);
Repeater1.DataBind(); //改变当前页码
Label_NowPage.Text = NextPage.ToString();
//改变页码下拉列表的选中项
Pages.SelectedValue = Label_NowPage.Text; //方法二:如果是最后一页,使“下一页”不可用
if (NextPage >= cd.MaxPageCount(Pcount))
{
btn_next.Enabled = false;
} //“上一页”按钮变为可用
btn_prev.Enabled = true;
}
//末页
void btn_last_Click(object sender, EventArgs e)
{
Repeater1.DataSource = cd.Select(Pcount, cd.MaxPageCount(Pcount));
Repeater1.DataBind(); //改变当前页码
Label_NowPage.Text = cd.MaxPageCount(Pcount).ToString();
//改变页码下拉列表的选中项
Pages.SelectedValue = Label_NowPage.Text; //“上一页”按钮变为可用
btn_prev.Enabled = true; //“下一页”按钮变为不可用
btn_next.Enabled = false;
}
//跳转
void btn_go_Click(object sender, EventArgs e)
{
//获取被选中的页号
int ToPage = Convert.ToInt32(Pages.SelectedValue);
//改变当前页码
Label_NowPage.Text = ToPage.ToString();
//查询并绑定数据
List<Car> lc = cd.Select(Pcount, ToPage);
Repeater1.DataSource = lc;
Repeater1.DataBind(); //首先设置所有按钮可用
btn_prev.Enabled = true;
btn_next.Enabled = true;
//若是首页或末页则设置“上一页”、“下一页”按钮不可用
if (Pages.SelectedValue == "")
btn_prev.Enabled = false;
if (Pages.SelectedValue == cd.MaxPageCount(Pcount).ToString())
btn_next.Enabled = false;
} }

后台代码

C#-WebForm-★★★ 分页展示 ★★★的更多相关文章

  1. Java Web中将oracle的数据库内容以表格形式展现到页面中(分页展示)

    分页SQL语句: ----分页显示 select * from (select rownum as r,t.* from () ; 查询的结果如下: 这个SQL,使用了三层嵌套的查询方式: 1)最内层 ...

  2. Django学习(5)优雅地分页展示网页

    在我们平时浏览网页时,经常会遇到网页里条目很多的情形,这时就会用到分页展示的功能.那么,在Django中,是如何实现网页分类的功能的呢?答案是Paginator类. 本次分享讲具体展示如何利用Djan ...

  3. C#-WebForm-组合查询(Queryable延迟查询、Intersect交集)、分页展示基础

    组合查询: 方法一:Queryable<> 延迟查询 其特点是:读到词句代码时不会立即执行,而是在进行数据绑定时执行 优点:此期间可以进行添加查询条件,以减少数据库查询内容,来减少内存占用 ...

  4. MySQL+Service+Servlet+Jsp实现Table表格分页展示数据

    下面以一个示例讲解如何使用MySQL+Service+Servlet+Jsp实现Table表格分页展示数据: eg:请假管理系统 要求如下: 一.打开首页页面, 访问查询请假记录的 servlet , ...

  5. Decoration4:分页展示

    现在我们实现前台List的分页展示,这也是最基本的要求 先看现在的Rest数据格式,在spring的默认返回中,分页用到的元素都已经在page节点中返回了,只要在前台合理利用就足够了 { " ...

  6. express + jqPaginator 分页展示内容

    写在前面的话 分页展示内容也是我们在页面开发中经常会遇到的需求 前端页面利用jqPaginator这个jquery插件来编写 后端利用mysql存储数据 开始敲代码 回顾sql知识 首先让我们回顾一下 ...

  7. jquery分页展示控件:kkpager

    kkpager v1.2 js分页展示控件,传入简单参数就能使用的分页效果控件 准备工作,引入js.css <script type="text/javascript" sr ...

  8. Application对象、ViewState对象、分页展示--2017年1月4日

    Application对象 存储 Application 变量  Application["application名称"] = "application的值"; ...

  9. ssh整合问题总结--使用HibernateTemplate实现数据分页展示

    在进行大量的数据展示时,必须要使用分页查询,第一次使用在SSH框架整合中使用分页查询,遇到了一些问题,下面以我练习的项目为例详细介绍,如何在Spring+hibernate(+action)的环境下完 ...

  10. 自己动手实现SharePointList的分页展示

    SharePoin列表里对条目的展示只有上一页下一页,不能够跳转,不能够一次导航到第一页和最后一页. 项目需要,所以对列表的数据展示进行了定制化开发来实现如上的功能. 前端用GridView展示,用L ...

随机推荐

  1. spring aop对service层日志和异常的处理

    1.aop是什么 AOP是Aspect Oriented Programming的缩写,意思是面向切面编程,与OOP(Object Oriented Programming)面向对象编程对等,都是一种 ...

  2. 工作中常用的git命令

    一 常用Git命令 git clone:(区分SSH or HTTP) git init:初始化仓库 二 Git命令详解 Git Bash下,cd /c git clone,从远程Git版本库克隆一份 ...

  3. 细谈Slick(6)- Projection:ProvenShape,强类型的Query结果类型

    在Slick官方文档中描述:连接后台数据库后,需要通过定义Projection,即def * 来进行具体库表列column的选择和排序.通过Projection我们可以选择库表中部分列.也可以增加一些 ...

  4. GJM : Unity3D HIAR -【 快速入门 】 二、搭建开发环境

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  5. ORM是什么?如何理解ORM

    一.ORM简介         对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过使 ...

  6. Struts2入门(七)——Struts2的文件上传和下载

    一.前言 在之前的随笔之中,我们已经了解Java通过上传组件来实现上传和下载,这次我们来了解Struts2的上传和下载. 注意:文件上传时,我们需要将表单提交方式设置为"POST" ...

  7. Windows Server2008 下用于.NET Framework3.0版本的问题无法在IIS7中配置.NET Framework4.0节点的问题

    Windows Server 2008中,功能列表安装的为.NET Framework3.0. 试了N种方法未升级为.NET Framework4.0(哪位如果可以直接升级为4.0或3.5希望能够分享 ...

  8. SDK接入(1)之Android Facebook SDK接入

    SDK接入(1)之Android Facebook SDK接入 由于游戏已上线,且处于维护阶段,所以有空写写各种SDK接入过程和遇到的问题,也当作一种工作总结.SDK接入主流分为这么几类,登录.支付. ...

  9. 阶段一:解析JSON

    “阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 最近学到解析JSON格式的网络数据,而作业也要求自己找一个天气预报的API地址,然后解析其中JSON格式的数据.可 ...

  10. C#语言基础——集合(ArrayList集合)

    集合及特殊集合 集合的基本信息: System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表.队列.位数组.哈希表和字典)的集合.System.Collections ...