当前位置:编程学习 > C#/ASP.NET >>

.net 开发的网站,怎么实现 123456789 这种分页效果,

就是类似于淘宝索商品页的分页效果啦
 
要那种 12345678... 那中效果哦! --------------------编程问答-------------------- asp.net有自带的分页控件 --------------------编程问答-------------------- http://www.webdiyer.com/Controls/AspNetPager --------------------编程问答--------------------
DataList 和 Gridview 都带有这样的分页效果 不必纠结  控件先看完在提问 --------------------编程问答-------------------- 演示和控件下载

你能把你的结贴率  提高点吗

--------------------编程问答-------------------- 用aspnetPage    控件吧   能满足你的需求     还比较简单 --------------------编程问答-------------------- 分页控件的效果,aspnetpaper分页控件也挺好用 --------------------编程问答-------------------- 控件的分页一定要小心了,性能存在很大问题,这个也必然,

最好自己动手写,sql存储过程分页实现

大数据量,reapter+sql存储过程分页 --------------------编程问答-------------------- 分页存储过程加aspnetpaper分页控件 --------------------编程问答-------------------- aspnetpage --------------------编程问答-------------------- GridView和datalist 自带这个功能 --------------------编程问答-------------------- 可以自己写个分页控件,方便自由控制显示格式。 --------------------编程问答-------------------- 后台组装分页字符串,页面用literal接收。 --------------------编程问答-------------------- 共1页   首页 上一页  1 2 3 4 5 6 7 8 9 10 ....下一页 末页

调用页面(Aspx):

在要显示分页导航的地方加个DIV标签:<div id="PageInfo" runat="server" class="Blue_Font12"></div>

调用页的代码(CS):

DataSet ds = db.getDs(sql);
this.PageInfo.InnerHtml = PageNums.GetPageNum(ds,DataList1,12); //传入DataSet,DataList名称和分页大小

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

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 + "页      ";

        pagestr += page > 1 ? "<a href="" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=1">首页</a>  <a href="" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + pre + "">上一页</a>" : "首页上一页";
       //中间页处理,这个增加时间复杂度,减小空间复杂度
        for (int i = startcount; i <= endcount; i++)
        {
            pagestr += page == i ? "  <font color="#ff0000">" + i + "</font>" : "  <a href="" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + i + "">" + i + "</a>";
        }
        pagestr += page != allpage ? "  <a href="" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + next + "">下一页</a>  <a href="" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + allpage + "">末页</a>" : " 下一页末页";

        return pagestr;

    }
} --------------------编程问答--------------------

        /// <summary>
        /// 生成通用分页
        /// </summary>
        /// <param name="pagetotal">总数据数</param>
        /// <param name="pageno">当前页</param>
        /// <param name="pagesize">每页显示条数</param>
        /// <param name="_strUrl">分页路径</param>
        public string BuilderNewsNextPage(int pagetotal, int pageno, int pagesize, string _strUrl)
        {
            string _strPageCodeHTML = "";
            int _intTotalPage, _intCurrPage;

            _intTotalPage = pagetotal;//总页数

            _intCurrPage = pageno;//当前页
            if (_intCurrPage < 1)
            {
                _intCurrPage = 1;
            }
            if (_intCurrPage > _intTotalPage)
            {
                _intCurrPage = _intTotalPage;
            }
            if (_intTotalPage > 1)
            {//总页数大于1时,才显示翻页
                int totalPage = _intTotalPage;
               
                if (_intCurrPage != 1)
                {
                    _strPageCodeHTML = _strPageCodeHTML + "<a href=\"" + String.Format(_strUrl, 1) + "\">首页</a> ";
                    _strPageCodeHTML = _strPageCodeHTML + "<a href=\"" + String.Format(_strUrl,(_intCurrPage - 1)) + "\">上一页</a> ";
                }
                else
                {
                    _strPageCodeHTML = _strPageCodeHTML + "<a class=\"disable\">首页</a> ";
                    _strPageCodeHTML = _strPageCodeHTML + "<a class=\"disable\">上一页</a> ";
                }

                //计算第N页的前后N页显示
                int showlength, Before, After, Variance;
                showlength = 10; //设置每页显示showlength个翻页标签10
                Variance = 1; //差额默认为0(没有差额)
                Before = _intCurrPage - (showlength - 1) / 2; //为当前页显示平衡(左右两边显示一样多的链接),偶数转为奇数
                if (Before < 1)
                {//如果超出最小页,则算出“差额”(用来补给最后页),“前页”置为“第一页”
                    Variance = 1 - Before;
                    Before = 1;
                }
                After = _intCurrPage + (showlength - 1) / 2 + Variance; //计算最“后页”(需要加上差额)
                if (After > _intTotalPage)
                {//如果超出最大页码,则“后页”置为“最大页”
                    if (Before > 1)
                    {//如果“前页”还有向前移动的空间
                        Variance = Before - 1; //计算“前页”可以移动的差额
                        if (Variance < (After - _intTotalPage))
                        {//如果差额比“后页”与“最大页”小,则直接置为“第一页”
                            Before = 1;
                        }
                        else
                        {//否则,“前页”再向前移动“差额”页即可
                            Before = Before - (After - _intTotalPage);
                        }
                    }
                    After = _intTotalPage;
                }
                //计算第N页的前后N页显示

                for (int i = Before; i <= After; i++)
                {//循环列出下拉框数值
                    if (_intCurrPage == i)
                    {
                        if(i==1)
                            _strPageCodeHTML = _strPageCodeHTML + "<a class=\"selected\" href=\"" + String.Format(_strUrl,i) + "\">" + i + "</a> ";
                        else
                            _strPageCodeHTML = _strPageCodeHTML + "<a class=\"selected\" href=\"" + String.Format(_strUrl,_intCurrPage) + "\">" + i + "</a> ";
                    }
                    else
                    {
                        _strPageCodeHTML = _strPageCodeHTML + "<a href=\"" + String.Format(_strUrl,i) + "\">" + i + "</a> ";
                    }
                }
                if (After < totalPage)
                {
                    _strPageCodeHTML = _strPageCodeHTML + "<font color='#0066CC'>...</font>";
                }

                if (_intCurrPage != totalPage)
                {
                    _strPageCodeHTML = _strPageCodeHTML + " <a href=\"" + String.Format(_strUrl,(_intCurrPage + 1)) + "\">下一页</a>";
                    _strPageCodeHTML = _strPageCodeHTML + " <a href=\"" + String.Format(_strUrl, _intTotalPage) + "\">末页</a>";
                }
                else
                {
                    _strPageCodeHTML = _strPageCodeHTML + " <a class=\"disable\">下一页</a>";
                    _strPageCodeHTML = _strPageCodeHTML + " <a class=\"disable\">末页</a>";
                }
                
            }
            return _strPageCodeHTML;
        }
--------------------编程问答-------------------- 这个 子夜博客里有源码 并且带效果图 --------------------编程问答-------------------- 可以用AspNetPager 这个控件 简单易用 也可以自己写分页方法, URL 传值这样的 --------------------编程问答-------------------- Mark --------------------编程问答-------------------- 类似GOOGLE的
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,