• ASP.NET 数字索引分页 (转)


    效果:
    共1页 首页 上一页 1 2 3 4 5 6 7 8 9 10 ....下一页 末页
    调用页面(Aspx):


    1.在要显示分页导航的地方加个DIV标签:

    <div id="PageInfo" runat="server" class="Blue_Font12"></div>
    2.调用页的代码(CS):
    DataList1.DataSource = ds.Tables[0].DefaultView;
    DataList1.DataBind();
    this.PageInfo.InnerHtml = PageNums.GetPageNum(ds,DataList1,12); //传入DataSet,DataList名称和分页大小

    3.PageNums实现分页类(PageNums.cs):

    (c#)

    代码
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    /// <summary>
    ///PageNums 的摘要说明
    /// </summary>
    public class PageNums
    {
        
    /// </summary>
        
    /// <param name="ds">DataSet实例</param>
        
    /// <param name="datalistname">DataList名称</param>
        
    /// <param name="pagesize">分页大小</param>
        public static string GetPageNum(DataSet ds, DataList datalistname, int pagesize)
        {
            PagedDataSource objPds 
    = new PagedDataSource();
            objPds.DataSource 
    = ds.Tables[0].DefaultView;
            objPds.AllowPaging 
    = true;
            
    int total = ds.Tables[0].Rows.Count;
            objPds.PageSize 
    = pagesize;
            
    int page;
            
    if (HttpContext.Current.Request.QueryString["page"!= null)
                page 
    = Convert.ToInt32(HttpContext.Current.Request.QueryString["page"]);
            
    else
                page 
    = 1;
            objPds.CurrentPageIndex 
    = page - 1;
            datalistname.DataSource 
    = objPds;
            datalistname.DataBind();
            
    int allpage = 0;
            
    int next = 0;
            
    int pre = 0;
            
    int startcount = 0;
            
    int endcount = 0;
            
    string pagestr = "";
            
    if (page < 1) { page = 1; }
            
    //计算总页数
            if (pagesize != 0)
            {
                allpage 
    = (total / pagesize);
                allpage 
    = ((total % pagesize) != 0 ? allpage + 1 : allpage);
                allpage 
    = (allpage == 0 ? 1 : allpage);
            }
            next 
    = page + 1;
            pre 
    = page - 1;
            startcount 
    = (page + 5> allpage ? allpage - 9 : page - 4;//中间页起始序号
            
    //中间页终止序号
            endcount = page < 5 ? 10 : page + 5;
            
    if (startcount < 1) { startcount = 1; } //为了避免输出的时候产生负数,设置如果小于1就从序号1开始
            if (allpage < endcount) { endcount = allpage; } //页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内
            pagestr = "" + allpage + "页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
            pagestr 
    += page > 1 ? "<a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=1\">首页</a>&nbsp;&nbsp;<a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + pre + "\">上一页</a>" : "首页 上一页";
           
    //中间页处理,这个增加时间复杂度,减小空间复杂度
            for (int i = startcount; i <= endcount; i++)
            {
                pagestr 
    += page == i ? "&nbsp;&nbsp;<font color=\"#ff0000\">" + i + "</font>" : "&nbsp;&nbsp;<a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + i + "\">" + i + "</a>";
            }
            pagestr 
    += page != allpage ? "&nbsp;&nbsp;<a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + next + "\">下一页</a>&nbsp;&nbsp;<a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + allpage + "\">末页</a>" : " 下一页 末页";
            
    return pagestr;
        }
    }

    (VB)

    代码
    Imports System
    Imports System.Data
    Imports System.Configuration
    Imports System.Web
    Imports System.Web.Security
    Imports System.Web.UI
    Imports System.Web.UI.HtmlControls
    Imports System.Web.UI.WebControls
    Imports System.Web.UI.WebControls.WebParts
    Imports Microsoft.VisualBasic

    Public Class PageNums
        
    ''' </summary> 
        ''' <param name="ds">DataSet实例</param> 
        ''' <param name="datalistname">DataList名称</param> 
        ''' <param name="pagesize">分页大小</param> 
        Public Shared Function GetPageNum(ByVal ds As DataSet, ByVal datalistname As DataList, ByVal pagesize As Integer) As String
            Dim objPds As New PagedDataSource()
            objPds.DataSource 
    = ds.Tables(0).DefaultView
            objPds.AllowPaging 
    = True
            Dim total As Integer 
    = ds.Tables(0).Rows.Count
            objPds.PageSize 
    = pagesize
            Dim page As Integer
            If HttpContext.Current.Request.QueryString(
    "page") IsNot Nothing Then
                page 
    = Convert.ToInt32(HttpContext.Current.Request.QueryString("page"))
            Else
                page 
    = 1
            End If
            objPds.CurrentPageIndex 
    = page - 1
            datalistname.DataSource 
    = objPds
            datalistname.DataBind()
            Dim allpage As Integer 
    = 0
            Dim [next] As Integer 
    = 0
            Dim pre As Integer 
    = 0
            Dim startcount As Integer 
    = 0
            Dim endcount As Integer 
    = 0
            Dim pagestr As String 
    = ""
            If page 
    < 1 Then
                page 
    = 1
            End If
            
    '计算总页数 
            If pagesize <> 0 Then
                allpage 
    = (total / pagesize)
                If (total Mod pagesize) 
    <> 0 Then
                    allpage 
    = allpage + 1
                Else
                    allpage 
    = allpage
                End If
                If allpage 
    = 0 Then
                    allpage 
    = 1
                Else
                    allpage 
    = allpage
                End If

            End If
            [next] 
    = page + 1
            pre 
    = page - 1
            If (page 
    + 5> allpage Then
                startcount 
    = allpage - 9
            Else
                startcount 
    = page - 4
            End If

            
    '中间页起始序号 
            '中间页终止序号 
            If page < 5 Then
                endcount 
    = 10
            Else
                endcount 
    = page + 5
            End If

            If startcount 
    < 1 Then
                startcount 
    = 1
            End If
            
    '为了避免输出的时候产生负数,设置如果小于1就从序号1开始 
            If allpage < endcount Then
                endcount 
    = allpage
            End If
            
    '页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内 
            pagestr = "" & allpage & "页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
            If page 
    > 1 Then
                pagestr 
    += "<a href=""" & HttpContext.Current.Request.CurrentExecutionFilePath & "?page=1"">首页</a>&nbsp;&nbsp;<a href=""" & HttpContext.Current.Request.CurrentExecutionFilePath & "?page=" & pre & """>上一页</a>"
            Else
                pagestr 
    += "首页 上一页"
            End If

            
    '中间页处理,这个增加时间复杂度,减小空间复杂度 
            For i As Integer = startcount To endcount
                If page 
    = i Then
                    pagestr 
    += "&nbsp;&nbsp;<font color=""#ff0000"">" & i & "</font>"
                Else
                    pagestr 
    += "&nbsp;&nbsp;<a href=""" & HttpContext.Current.Request.CurrentExecutionFilePath & "?page=" & i & """>" & i & "</a>"
                End If

            Next


            If page 
    <> allpage Then
                pagestr 
    += "&nbsp;&nbsp;<a href=""" & HttpContext.Current.Request.CurrentExecutionFilePath & "?page=" & [next] & """>下一页</a>&nbsp;&nbsp;<a href=""" & HttpContext.Current.Request.CurrentExecutionFilePath & "?page=" & allpage & """>末页</a>"
            Else
                pagestr 
    += " 下一页 末页"
            End If
            Return pagestr
        End Function
    End Class
  • 相关阅读:
    c#中文字符串与byte数组互相转化
    c#的中英文混合字符串截取 public static string SubString(string inputString, int byteLength)
    c#的中英文混合字符串截取指定长度,startidx从0开始
    //字符是否为汉字
    //获得字节长度
    C# 截取中英文混合字符串分行显示宽度相同
    C#截取中英文混合字符串分行显示
    C#截取指定长度中英文字符串方法 (修改)
    截取字符串的长度(中英文)
    canvas贪吃蛇游戏
  • 原文地址:https://www.cnblogs.com/tianlong/p/1821892.html
Copyright © 2020-2023  润新知