ASP.NET的分页方法(一)

 2023-09-11 阅读 16 评论 0

摘要:要做一个关于分页写法的专题,这是今天的第一讲,自制分页,可能有些代码需要优化,希望大家给出一些中肯的建议 前端怎么实现分页,前台使用的repeater绑定的数据: <form id="form1" runat="server"><div&g

要做一个关于分页写法的专题,这是今天的第一讲,自制分页,可能有些代码需要优化,希望大家给出一些中肯的建议

前端怎么实现分页,前台使用的repeater绑定的数据:

<form id="form1" runat="server"><div><ul style="list-style: none"><asp:Repeater ID="Repeater1" runat="server"><ItemTemplate><li><%#Eval("Title") %></li></ItemTemplate></asp:Repeater></ul></div><div id="pagerwrapper"><table id="pager" cellspacing="0"><tbody><tr><td colspan="5"><%=RePager %>跳转至:<asp:TextBox ID="TxtPager" runat="server"></asp:TextBox><asp:Button ID="BtnOk" runat="server" Text="确定" OnClick="BtnOk_Click" /></td></tr></tbody></table></div></form>

后台代码写法如下:注释已标明:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;namespace WebApplication1
{public partial class WebForm2 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if(!IsPostBack){GetDate();}//这样写可以避免第一次加载之后再次加载不显示的问题
            GetPager();}string ConStr = ConfigurationManager.ConnectionStrings["Connection"].ToString();public string pager = string.Empty;public string RePager = string.Empty;int startcount = 0;int endcount = 0;//绑定数据源public void GetDate() {if (Request.QueryString["pager"] != null){string GetDateSql = "SELECT * FROM ( SELECT ROW_NUMBER() over(order by id) as pid,*FROM [Info]) AS aa where aa.pid>=" + Request.QueryString["pager"] + "";using (SqlConnection conn = new SqlConnection(ConStr)){conn.Open();DataSet dt = new DataSet();SqlDataAdapter sdt = new SqlDataAdapter(GetDateSql, conn);sdt.Fill(dt);this.Repeater1.DataSource = dt;this.Repeater1.DataBind();}}else 
       //初次加载不传入任何页码,默认显示前十条{
string GetDateSql = "SELECT * FROM ( SELECT ROW_NUMBER() over(order by id) as pid,*FROM [Info]) AS aa ";using (SqlConnection conn = new SqlConnection(ConStr)){conn.Open();DataSet dt = new DataSet();SqlDataAdapter sdt = new SqlDataAdapter(GetDateSql, conn);sdt.Fill(dt);this.Repeater1.DataSource = dt;this.Repeater1.DataBind();}}}//得到页码public void GetPager() {string GetTotal = "SELECT COUNT(*) FROM [Info]";using (SqlConnection conn = new SqlConnection(ConStr)){conn.Open();SqlCommand comm = new SqlCommand(GetTotal,conn);int i = Convert.ToInt32(comm.ExecuteScalar());int totalPageNum = (i + 10 - 1) / 10;//一共的页数int j = 0;//记录当前页string FirstPager = string.Empty;//首页string LastPager = string.Empty;//尾页string NextPager = string.Empty;//下一页string PrePager = string.Empty;//上一页int next = 0;//记录下一页页码int pre = 0;//记录上一页页码for (j = 1; j <= totalPageNum; j++){//Request.QueryString["value"]接受的是页码值if (Request.QueryString["value"] == null){startcount = (1 + 5) > totalPageNum ? totalPageNum - 9 : 1 - 4;//中间页起始序号//中间页终止序号endcount = 1 < 5 ? 10 : 1 + 5;if (startcount < 1) { startcount = 1; } //为了避免输出的时候产生负数,设置如果小于1就从序号1开始if (totalPageNum < endcount) { endcount = totalPageNum; } //页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内 }else {startcount = (int.Parse(Request.QueryString["value"]) + 5) > totalPageNum ? totalPageNum - 9 : int.Parse(Request.QueryString["value"]) - 4;//中间页起始序号//中间页终止序号endcount = int.Parse(Request.QueryString["value"]) < 5 ? 10 : int.Parse(Request.QueryString["value"]) + 5;if (startcount < 1) { startcount = 1; } //为了避免输出的时候产生负数,设置如果小于1就从序号1开始if (totalPageNum < endcount) { endcount = totalPageNum; } //页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内 }}if (Request.QueryString["value"] == null){next = 1 + 1;pre = 1;}else {next = int.Parse(Request.QueryString["value"]) + 1;pre = int.Parse(Request.QueryString["value"]) - 1;//判断并进行越界处理if(pre<=0){pre = 1;}if(next>totalPageNum){next = totalPageNum;}}for (j = startcount; j <= endcount; j++){if (Request.QueryString["value"]==null){pager += "<a class=\"hrefName\" href=\"WebForm2.aspx?pager=" + 10 * (1 - 1) + "&value=" + 1 + "\">" + j + "</a>|";}else if (int.Parse(Request.QueryString["value"]) == j){pager += "<a class=\"hrefName\" href=\"WebForm2.aspx?pager=" + 10 * (j - 1) + "&value=" + j + "\"><span style=\"color:red\">" + j + "</span></a>|";}else{//10 * (j - 1)这个公式的意思是(当前页码-1)*10,可以跳转到对应页码查看相关的数据pager += "<a class=\"hrefName\" href=\"WebForm2.aspx?pager=" + 10 * (j - 1) + "&value=" + j + "\">" + j + "</a>|";}}FirstPager = "<a class=\"hrefName\" href=\"WebForm2.aspx?pager=" + 10 * (1 - 1) + "&value=" + 1 + "\"> 首页</a>|";LastPager = "<a class=\"hrefName\" href=\"WebForm2.aspx?pager=" + 10 * (totalPageNum - 1) + "&value=" + totalPageNum + "\"> 尾页</a>|";NextPager = "<a class=\"hrefName\" href=\"WebForm2.aspx?pager=" + 10 * (next - 1) + "&value=" + next + "\"> 下一页</a>|";PrePager = "<a class=\"hrefName\" href=\"WebForm2.aspx?pager=" + 10 * (pre - 1) + "&value=" + pre + "\"> 上一页</a>|";RePager = FirstPager + PrePager+ pager + NextPager + LastPager;//拼凑字符串 }}//跳转到第几页的方法protected void BtnOk_Click(object sender, EventArgs e){if (Request.QueryString["value"] == null){Response.Redirect("WebForm2.aspx?pager=" + 10 * (Convert.ToInt32(this.TxtPager.Text) - 1)+"&value=" + this.TxtPager.Text );}}} }

怎么对文档进行分页、 附带几条公式,如有不对,希望大家指正

信息条数/每页显示条数=一共的页数

开始页码= (当前显示页+ 5) > 总页? 总页 - 9 : 当前显示页 - 4;//中间页起始序号
//中间页终止序号
结束页码= 当前显示页 < 5 ? 10 : 当前显示页+ 5;

转载于:https://www.cnblogs.com/llcdbk/p/4021614.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/46020.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息