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

帮看看有没有做过这个分页效果的

http://www.cnblogs.com/cate/mvc/1
上面的连接是要的效果。

/// <summary>
/// 获取数字分页
/// </summary>
/// <param name="currentPageIndex">当前页</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name="recordCount">数据条数</param>
/// <returns></returns>
private static string GetNumericPage_New(int currentPageIndex, int pageSize, int recordCount)
{            
     StringBuilder sb = new StringBuilder();
     //在这里应该怎么写算法
     
     return sb.ToString();//返回数字分页的html
}

之前试着写了下,思路有点乱,现在好像思维固定在一个地方跳不出来,希望大家帮个忙,我自己也再想想 --------------------编程问答-------------------- 弄不来 帮忙顶哈  --------------------编程问答-------------------- 你可以参考下aspnetpager的源码。
我的想法是当前页小于10,就循环前十页。
当前页在后面10位内,就循环后面10页。
其他的就当前页前5+后5.
这样情况分开,就好办了。 --------------------编程问答--------------------

    /// <summary>
    /// 目录分页实体。
    /// </summary>
    public class PageModel
    {
        private int _infocount;
        private int _showinfocount;
        private int _pagecount;
        private int _showpagecount;
        private int _index;
        private bool _side;
        private string _location;
        private string _url;
        private string _pagequerystring;
        private string _fristpreviousurl;
        private string _lastnexturl;
        private string _unfocushtml;
        private string _onfocushtml;
        private string _spaceshtml;
        private string _firsturl;
        private string _lasturl;
        private string _previousurl;
        private string _nexturl;
        private string _pagehtml;

        /// <summary>
        /// 构造函数(默认)。
        /// </summary>
        public PageModel()
        { }

        /// <summary>
        /// 构造函数(赋值)。
        /// </summary>
        /// <param name="infocount">信息总数。</param>
        /// <param name="showinfocount">每页显示信息数。</param>
        /// <param name="showpagecount">显示页数。</param>
        /// <param name="side">显示页数为偶数时的偏移方式(true左,false右)。</param>
        /// <param name="location">完整地址。</param>
        /// <param name="pagequerystring">分页QueryString格式。</param>
        /// <param name="fristpreviousurl">当期页为首页时上一页的Url。</param>
        /// <param name="lastnexturl">当期页为末页时下一页的Url。</param>
        /// <param name="unfocushtml">非当前页Html(不包含首页,上一页,下一页,末页)。</param>
        /// <param name="onfocushtml">当前页Html。</param>
        /// <param name="spaceshtml">页数间空隙Html。</param>
        public PageModel(int infocount, int showinfocount, int showpagecount, bool side, string location, string pagequerystring, string fristpreviousurl, string lastnexturl, string unfocushtml, string onfocushtml, string spaceshtml)
        {
            this._infocount = infocount;
            this._showinfocount = showinfocount;
            this._showpagecount = showpagecount;
            this._side = side;
            this._location = location;
            this._pagequerystring = pagequerystring;
            this._fristpreviousurl = fristpreviousurl;
            this._lastnexturl = lastnexturl;
            this._unfocushtml = unfocushtml;
            this._onfocushtml = onfocushtml;
            this._spaceshtml = spaceshtml;


        }

        /// <summary>
        /// 信息总数。
        /// </summary>
        public int InfoCount
        {
            set { _infocount = value; }
            get { return _infocount; }
        }
        /// <summary>
        /// 每页显示信息数。
        /// </summary>
        public int ShowInfoCount
        {
            set { _showinfocount = value; }
            get { return _showinfocount; }
        }
        /// <summary>
        /// 总页数。
        /// </summary>
        public int PageCount
        {
            set { _pagecount = value; }
            get { return _pagecount; }
        }
        /// <summary>
        /// 显示页数。
        /// </summary>
        public int ShowPageCount
        {
            set { _showpagecount = value; }
            get { return _showpagecount; }
        }
        /// <summary>
        /// 当前页。
        /// </summary>
        public int Index
        {
            set { _index = value; }
            get { return _index; }
        }
        /// <summary>
        /// 显示页数为偶数时的偏移方式(true左,false右)。
        /// </summary>
        public bool Side
        {
            set { _side = value; }
            get { return _side; }
        }
        /// <summary>
        /// 当前页完整地址。
        /// </summary>
        public string Location
        {
            set { _location = value; }
            get { return _location; }
        }
        /// <summary>
        /// 去地址页数QueryString地址。
        /// </summary>
        public string Url
        {
            set { _url = value; }
            get { return _url; }
        }
        /// <summary>
        /// 分页QueryString格式。
        /// </summary>
        public string PageQueryString
        {
            set { _pagequerystring = value; }
            get { return _pagequerystring; }
        }
        /// <summary>
        /// 当期页为首页时上一页的Url。
        /// </summary>
        public string FristPreviousUrl
        {
            set { _fristpreviousurl = value; }
            get { return _fristpreviousurl; }
        }
        /// <summary>
        /// 当期页为末页时下一页的Url。
        /// </summary>
        public string LastNextUrl
        {
            set { _lastnexturl = value; }
            get { return _lastnexturl; }
        }
        /// <summary>
        /// 非当前页Html(不包含首页,上一页,下一页,末页)。
        /// </summary>
        public string UnFocusHtml
        {
            set { _unfocushtml = value; }
            get { return _unfocushtml; }
        }
        /// <summary>
        /// 当前页Html。
        /// </summary>
        public string OnFocusHtml
        {
            set { _onfocushtml = value; }
            get { return _onfocushtml; }
        }
        /// <summary>
        /// 页数间空隙Html。
        /// </summary>
        public string SpacesHtml
        {
            set { _spaceshtml = value; }
            get { return _spaceshtml; }
        }
        /// <summary>
        /// 首页Url地址。
        /// </summary>
        public string FirstUrl
        {
            set { _firsturl = value; }
            get { return _firsturl; }
        }
        /// <summary>
        /// 末页Url地址。
        /// </summary>
        public string LastUrl
        {
            set { _lasturl = value; }
            get { return _lasturl; }
        }
        /// <summary>
        /// 上一页Url地址。
        /// </summary>
        public string PreviousUrl
        {
            set { _previousurl = value; }
            get { return _previousurl; }
        }
        /// <summary>
        /// 下一页Url地址。
        /// </summary>
        public string NextUrl
        {
            set { _nexturl = value; }
            get { return _nexturl; }
        }
        /// <summary>
        /// 分页Html。
        /// </summary>
        public string PageHtml
        {
            set { _pagehtml = value; }
            get { return _pagehtml; }
        }
    }


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

        /// <summary>
        /// 填充GL.Tool.PageModel。
        /// </summary>
        /// <param name="PM"></param>
        public static void FillPageModel(PageModel PM)
        {
            PM.PageCount = PM.InfoCount % PM.ShowInfoCount == 0 ? PM.InfoCount / PM.ShowInfoCount : (PM.InfoCount - PM.InfoCount % PM.ShowInfoCount) / PM.ShowInfoCount + 1;
            PM.Index = int.Parse(PM.Location.Remove(0, PM.Location.LastIndexOf(PM.PageQueryString) + PM.PageQueryString.Length));
            PM.Url = PM.Location.Remove(PM.Location.LastIndexOf(PM.PageQueryString) + PM.PageQueryString.Length);
            PM.FirstUrl = PM.Url + "1";
            PM.LastUrl = PM.Url + PM.PageCount;
            PM.PreviousUrl = PM.Index == 1 ? (PM.FristPreviousUrl == "" ? PM.LastUrl : PM.FristPreviousUrl) : (PM.Url + (PM.Index - 1));
            PM.NextUrl = PM.Index == PM.PageCount ? (PM.LastNextUrl == "" ? PM.FirstUrl : PM.LastNextUrl) : (PM.Url + (PM.Index + 1));
            string Url = null;
            int c = (PM.ShowPageCount - PM.ShowPageCount % 2) / 2;
            if (PM.PageCount < PM.ShowPageCount || PM.PageCount == PM.ShowPageCount)
                for (int i = 1; i <= PM.PageCount; i++)
                    Url += (PM.Index == i ? i.ToString() : (PM.Url + i)) + "∴";
            else if (PM.ShowPageCount % 2 != 0)
                if (PM.Index < c + 2)
                    for (int i = 1; i <= PM.ShowPageCount; i++)
                        Url += (PM.Index == i ? i.ToString() : (PM.Url + i)) + "∴";
                else if (PM.Index > PM.PageCount - c - 1)
                    for (int i = PM.PageCount - 2 * c; i <= PM.PageCount; i++)
                        Url += (PM.Index == i ? i.ToString() : (PM.Url + i)) + "∴";
                else
                    for (int i = PM.Index - c; i <= PM.Index + c; i++)
                        Url += (PM.Index == i ? i.ToString() : (PM.Url + i)) + "∴";
            else
                if (PM.Side == true)
                    if (PM.Index <= c)
                        for (int i = 1; i <= PM.ShowPageCount; i++)
                            Url += (PM.Index == i ? i.ToString() : (PM.Url + i)) + "∴";
                    else if (PM.Index > PM.PageCount - c - 1)
                        for (int i = PM.PageCount - PM.ShowPageCount + 1; i <= PM.PageCount; i++)
                            Url += (PM.Index == i ? i.ToString() : (PM.Url + i)) + "∴";
                    else
                        for (int i = PM.Index - c + 1; i <= PM.Index + c; i++)
                            Url += (PM.Index == i ? i.ToString() : (PM.Url + i)) + "∴";
                else
                    if (PM.Index < c + 2)
                        for (int i = 1; i <= PM.ShowPageCount; i++)
                            Url += (PM.Index == i ? i.ToString() : (PM.Url + i)) + "∴";
                    else if (PM.Index > PM.PageCount - c)
                        for (int i = PM.PageCount - 2 * c + 1; i <= PM.PageCount; i++)
                            Url += (PM.Index == i ? i.ToString() : (PM.Url + i)) + "∴";
                    else
                        for (int i = PM.Index - c; i < PM.Index + c; i++)
                            Url += (PM.Index == i ? i.ToString() : (PM.Url + i)) + "∴";
            Url = Url.Remove(Url.Length - 1);
            string[] strs = Url.Split('∴');
            foreach (string str in strs)
                PM.PageHtml += (str == PM.Index.ToString() ? string.Format(PM.OnFocusHtml, str) : string.Format(PM.UnFocusHtml, (str + "∴" + str.Remove(0, str.LastIndexOf(PM.PageQueryString) + PM.PageQueryString.Length)).Split('∴'))) + PM.SpacesHtml;
            PM.PageHtml = PM.PageHtml.Remove(PM.PageHtml.LastIndexOf(PM.SpacesHtml));
        }
--------------------编程问答--------------------
public GL.Tool.PageModel PM;

protected void Page_Load(object sender, EventArgs e)
{
PM = new GL.Tool.PageModel(Count, 10, 9, true, "index-" + intType + "-" + Index, "-", "first", "last", "<a href=\"{0}.html\">{1}</a>", "<span>{0}</span>", "");
Pagination.FillPageModel(PM);
                    PM.PreviousUrl = PM.PreviousUrl == "first" ? PM.LastUrl : PM.PreviousUrl + ".html";
                    PM.NextUrl = PM.NextUrl == "last" ? PM.FirstUrl : PM.NextUrl + ".html";
}


<a href="<%=PM.FirstUrl %>.html">首页</a> <a href="<%=PM.PreviousUrl %>">上一页</a>
            <%=PM.PageHtml %>> <a href="<%=PM.NextUrl %>">下一页</a> <a href="<%=PM.LastUrl %>.html">
                末页</a>

--------------------编程问答-------------------- 看看aspnetpager分页控件
--------------------编程问答-------------------- 顶,,, --------------------编程问答-------------------- aspnetpager我手里有,dll的,没反编译过,现在想自己写个,感觉应该没多大问题,写到后来发现思路有点乱。。。。。。。 --------------------编程问答-------------------- 路过,留下脚印...3楼的是个不错的方法,虽然现在用的是aspnetpager的分页控件 --------------------编程问答-------------------- for 循环 innerhtml 一段

 <a href="">1 </a>
<a href="">2 </a>
<a href="">3 </a>
<a href="">4 </a>

设置a {width:20px ;height:20px ;line-height:20px; text-align:center; margin:1px; float:left} --------------------编程问答-------------------- 我写的一个

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class UserControls_PageCute : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    /// <summary>
    /// 自定义分页控件
    /// </summary>
    /// <param name="recordNum">总记录条数</param>
    /// <param name="NumperPage">每页显示记录条数</param>
    /// <param name="CurrentPage">当前页</param>
    /// <param name="pp">最多显示页面链接个数</param>
    public void SetPage(int recordNum,int NumperPage,int CurrentPage,int pp,string url,string url_end)
    {
        string panel_text;
        int thepages,pi;

        if (recordNum % NumperPage > 0)
        {
            thepages = recordNum / NumperPage + 1;
        }
        else
        {
            thepages = recordNum / NumperPage;
        }
        if (thepages == 0)
        {
            PageCute.Visible = false;
        }
        else
        {

            if ((CurrentPage > thepages) || (CurrentPage < 1))
            {
                CurrentPage = 1;
            }
            panel_text = "<ul>";
            int ppp, pl, pr;
            ppp = pp / 2;
            if (ppp % 2 == 0)
            {
                ppp = ppp - 1;
            }
            pl = CurrentPage - ppp;
            pr = pl + pp - 1;
            if (pl < 1)
            {
                pr = pr - pl + 1;
                pl = 1;
                if (pr > thepages)
                {
                    pr = thepages;
                }
            }
            if (pr > thepages)
            {
                pl = pl + thepages - pr;
                pr = thepages;
                if (pl < 1)
                {
                    pl = 1;
                }
            }

            if (CurrentPage > 1)
            {
                panel_text += "<li><a href=\"" + url + (CurrentPage - 1).ToString() + url_end + "\">上一页</a></li>";

            }
            else
            {
                panel_text += "<li><span class=\"disable\">上一页</span></li>";
            }
            if (pl > 1)
            {
                panel_text += "<li><a href=\"" + url + "1" + url_end + "\" >1</a></li>";
                if (pl > 2)
                {
                    panel_text += "<li>...</li>";
                }
            }
            for (pi = pl; pi <= pr; pi++)
            {
                if (CurrentPage==pi) {
                    panel_text += "<li><span class=\"current\">" + pi.ToString() + " </span></li>";
                }else{
                    panel_text += "<li><a href=\"" + url + pi.ToString() + url_end + "\">" + pi.ToString() + "</a></li>";
                }
            }
            if (pr < thepages )
            {
                if (pr<(thepages-1))
                {
                    panel_text += "<li>...</li>";
                }
                panel_text += "<li><a href=\"" + url + (thepages).ToString() + url_end + "\">" + (thepages).ToString() + "</a></li>";
            }
            if (CurrentPage < thepages)
            {
                panel_text += "<li><a href=\"" + url + (CurrentPage + 1).ToString() + url_end + "\" >下一页</a></li>";
            }
            else
            {
                panel_text += "<li><span class=\"disable\">下一页</span></li>";
            }
            //PageCute.v
            panel_text += "<li> 共" + thepages.ToString() + "页</li></ul>";
            Page_Cute.Text = panel_text;
        }
    }
}


附上css代码

/*---------------------------------分页控件----------------------------------*/
.pagePanel{
position:relative;
background:#F7F7F7;
border:1px solid #EDEDED;
margin:15px 0px;
height:30px;
}
.pagePanel ul{
position:absolute;
top:7px;
right:7px;
margin:0px;
padding:0px;
}
.pagePanel li{
float:left;
margin-left:5px;
display:inline;
color:#999999;
}
.pagePanel li a, .pagePanel li span{
display:block;
line-height:16px;
padding:0 5px;
border:1px solid #A5A5A5;
color:#484848;
}
.pagePanel li a:hover, .pagePanel li span.current{
border:1px solid #FFA200;
background:#FFA200;
color:#FFF;
text-decoration:none;
}
.pagePanel li span.disable{
color:#A5A5A5;
}
/*---------------------------------分页控件----------------------------------*/
--------------------编程问答--------------------

html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="x-ua-compatible" content="ie=7" />
    <title></title>
    <style type="text/css">
        * { padding: 0px; margin: 0px; }
        html { font-size: 0.75em; }
        div { width: 800px; margin: 20px auto 20px auto; }
        .current { background-color: #2E6AB1; border: 1px solid navy; color: white; font-weight: bold; margin-right: 4px; padding: 2px 10px; }
        div a { border: 1px solid #9AAFE5; color: #2E6AB1; margin-right: 4px; padding: 2px 5px; text-decoration: none; }
    </style>
</head>
<body>
    <div>
        <span class="current">1</span> <a href="/cate/mvc/2">2</a> <a href="/cate/mvc/3">3</a>
        <a href="/cate/mvc/4">4</a> <a href="/cate/mvc/5">5</a> <a href="/cate/mvc/6">6</a>
        <a href="/cate/mvc/7">7</a> <a href="/cate/mvc/8">8</a> <a href="/cate/mvc/9">9</a>
        <a href="/cate/mvc/10">10</a> <a href="/cate/mvc/11">11</a> ...<a href="/cate/mvc/12">12</a>
        <a href="/cate/mvc/2">Next ></a>
    </div>
    <div>
        <%=PM.PreviousUrl %>
        <%=PM.FirstUrl %>
        <%=PM.PageHtml %>
        <%=PM.NextUrl %>
        <%=PM.LastUrl %>
    </div>
</body>
</html>



        public GL.Tool.PageModel PM;
        public int Index = 1;
        protected void Page_Load(object sender, EventArgs e)
        {
            PM = new GL.Tool.PageModel(100, 9, 11, true, "cate/mvc/" + Index, "/", "first", "last", "<a href=\"{0}\">{1}</a>", "<span class=\"current\">{0}</span>", "");
            GL.Tool.Pagination.FillPageModel(PM);
            if (Index == 1)
            {
                PM.PreviousUrl = "";
                PM.FirstUrl = "";
                PM.NextUrl = "<a href=\"" + PM.NextUrl + "\">Next ></a>";
                PM.LastUrl = "...<a href=\"cate/mvc/" + PM.PageCount + "\">" + PM.PageCount + "</a>";
            }
            else if (Index == PM.PageCount)
            {
                PM.PreviousUrl = "<a href=\"" + PM.PreviousUrl + "\">< Prev</a>";
                PM.FirstUrl = "<a href=\"cate/mvc/1\">1</a>...";
                PM.NextUrl = "";
                PM.LastUrl = "";
            }
            else
            {
                PM.PreviousUrl = "<a href=\"" + PM.PreviousUrl + "\">< Prev</a>";
                PM.FirstUrl = "<a href=\"cate/mvc/1\">1</a>...";
                PM.NextUrl = "<a href=\"" + PM.NextUrl + "\">Next ></a>";
                PM.LastUrl = "...<a href=\"cate/mvc/" + PM.PageCount + "\">" + PM.PageCount + "</a>";
            }
        }

稍微改下就和它的效果一样,这个分页我自己写的,在套用格式试的时候只写了我会用到的格式套用公式无法使用某些稀奇古怪的格式,如它那种在中间页的效果需要在FillPageModel里面改下 --------------------编程问答-------------------- 顶,学习 --------------------编程问答-------------------- 路过接分 --------------------编程问答--------------------
引用楼主 dd__dd 的回复:
http://www.cnblogs.com/cate/mvc/1
上面的连接是要的效果。

/// <summary>
/// 获取数字分页
/// </summary>
/// <param name="currentPageIndex">当前页</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name=……
如果这问题都还问,我不知道你那两颗星是怎么来的。对于一般的算法应该说是我们搞开发的强项 --------------------编程问答-------------------- 路过接分 --------------------编程问答--------------------

/* 调用时请先新增加一个用户控件,在上面拖一个标签.
 * 用户控件的代码如下
 * 调用方式为:
 * 1.先设置本分页控件的记录总数,一般为所读取的全部记录的数量.如
 *   Pager1.Record = query.Records;
 * 2.设置每页每版显示的记录条数.如
 *   Pager1.Items = 15;
 * 3.设置每个大版面显示的页面数量.请设置 PageButtonCount的值,默认为:10
 * 4.调用此方法: Pager1.ShowPage();
*/
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Pager : System.Web.UI.UserControl
{
    #region 属性
    private string PREV = "<span  style=\" font-family:Webdings\" title=\"上一页\">7</span>";
    private string NEXT = "<span  style=\" font-family:Webdings\" title=\"下一页\">8</span>";
    private string FIRST = "<span style=\" font-family:Webdings\" title=\"首页\">9</span>";
    private string LAST = "<span  style=\" font-family:Webdings\" title=\"末页\">:</span>";
    private string SPACE = " ";
    private int _pageButtonCount = 10;//每版显示10页
    /// <summary>
    /// 每版显示分页按钮数
    /// </summary>
    public int PageButtonCount
    {
        get { return _pageButtonCount; }
        set { _pageButtonCount = value; }
    }
    private string _text;
    /// <summary>
    /// 分页控件文本的样式
    /// </summary>
    public string TextCss
    {
        get { return _text; }
        set { _text = value; }
    }
    private string _css;
    /// <summary>
    /// 此处用来设置连接的样式
    /// </summary>
    public string Css
    {
        get { return _css; }
        set { _css = value; }
    }
    private string _ci;
    /// <summary>
    /// 设置当前页的数字的样式
    /// </summary>
    public string currentIndexPageStyle
    {
        get { return _ci; }
        set { _ci = value; }
    }
    private int _record;
    /// <summary>
    /// 设置或得到全部的记录数
    /// </summary>
    public int Record
    {
        set { _record = value; }
        get { return _record; }
    }
    private int _items;
    /// <summary>
    /// 每页显示的记录数
    /// </summary>
    public int Items
    {
        get { return _items; }
        set { _items = value; }
    }
    /// <summary>
    /// 总共有几页
    /// </summary>    
    private int PageTotal
    {
        get
        {
            return (int)((Record + Items-1) / Items);
        }
    }
    #endregion

    /// <summary>
    /// 得到每一个连接的参数
    /// </summary>
    /// <param name="index"></param>
    /// <returns></returns>
    private string getUrl(string index)
    {
        string Url = string.Empty;
        for (int i = 0; i < Request.QueryString.Count; i++)
        {
            if (Request.QueryString.GetKey(i).ToLower() != "pageindex")      {
                Url = Url + "&" + Request.QueryString.GetKey(i).ToString() + "=" + Server.UrlEncode(Request.QueryString[i].ToString());
            }
        }
        Url = Request.Path + "?pageindex=" + index + Url;
        //string root = "http://" + this.Request.Url.Host;
        //string pth = root + Request.Path + "?pageindex=" + index + Url;
        //Url =root+this.Request.ApplicationPath+"/html.aspx?url=" +CB.Libraries.Share.Share.UrlEncode( pth,Page);
        return Url;
    }
    /// <summary>
    /// 得到分页按钮开始和结束的数字
    /// </summary>
    /// <param name="start"></param>
    /// <param name="end"></param>
    private void getStartEnd(ref int start, ref int end)
    {
        start =curindex-PageButtonCount/2 + 1-PageButtonCount%2;
        end = curindex + PageButtonCount / 2;
        if (start < 1)
        {
            end = end - start + 1;
        }
        if (end > PageTotal)
        {
            start = start - end + PageTotal;
            end = PageTotal;
        }
        if (start < 1)
        {
            start = 1;
        }

    }
    /// <summary>
    /// 当前页码
    /// </summary>
    private int curindex
    {
        get
        {
            if (Request.QueryString["pageindex"] == null || Convert.ToInt32(Request.QueryString["pageindex"]) < 1)
                return 1;
            else if (Convert.ToInt32(Request.QueryString["pageindex"]) > PageTotal)
                return PageTotal;
            else
                return Convert.ToInt32(Request.QueryString["pageindex"]);

        }
    }
    /// <summary>
    /// 得到数字连接的数字,类似于 1 2 3 4 5 6 7 8
    /// </summary>
    /// <returns></returns>
    private string getNumber()
    {
        string mid = string.Empty;
        int start = 0;
        int end = 0;
        getStartEnd(ref start, ref end);
        for (int i =start; i <= end; i++)
        {
            if (i == curindex)//curindex为当前的页面数,如果等于当前的页面数,则不给它设置超连接
                mid = mid + "<span class='" + currentIndexPageStyle + "' >" + i.ToString() + "</span>" + SPACE;
            else
                mid = mid + "<a class='"+Css+"' href='" + getUrl(i.ToString()) + "'>" + i.ToString() + "</a>" + SPACE;
        }
        return mid;
    }
    /// <summary>
    /// 分页的方法,要调用这个
    /// </summary>
    public void ShowPage()
    {
        if (Record == 0) { //当前无记录
            LblNvbar.Text = "分页:" + FIRST + SPACE + PREV + SPACE+"当前无记录"+SPACE + NEXT + SPACE + LAST ; 
        }
        else  {
            int start = 0;
            int end = 0;
            getStartEnd(ref start, ref end);
            if (curindex == 1)            
            { //在第一页
                LblNvbar.Text = "分页:" + FIRST + SPACE + PREV + SPACE + getNumber() + "<a class='" + Css + "' href='" + getUrl((curindex + 1).ToString()) + "'>" + NEXT + "</a>" + SPACE + "<a class='" + Css + "' href='" + getUrl(PageTotal.ToString()) + "'>" + LAST + "</a>" + "第" + curindex.ToString() + "页共" + PageTotal.ToString() + "页.共" + Record.ToString() + "条记录";
            }
            else if (curindex == PageTotal)
            { //最后一页
                LblNvbar.Text = "分页:" + "<a class='" + Css + "' href='" + getUrl("1") + "'>" + FIRST + "</a>" + SPACE + "<a class='" + Css + "' href='" + getUrl((curindex - 1).ToString()) + "'>" + PREV + "</a>" + SPACE + getNumber() + NEXT + SPACE + LAST + "第" + curindex.ToString() + "页共" + PageTotal.ToString() + "页.共" + Record.ToString() + "条记录";
            }
            else
            {
                LblNvbar.Text = "分页:" + "<a  class='" + Css + "' href='" + getUrl("1") + "'>" + FIRST + "</a>" + SPACE + "<a class='" + Css + "' href='" + getUrl((curindex - 1).ToString()) + "'>" + PREV + "</a>" + SPACE + getNumber() + "<a class='" + Css + "' href='" + getUrl((curindex + 1).ToString()) + "'>" + NEXT + "</a>" + SPACE + "<a class='" + Css + "' href='" + getUrl(PageTotal.ToString()) + "'>" + LAST + "</a>" + "第" + curindex.ToString() + "页共" + PageTotal.ToString() + "页.共" + Record.ToString() + "条记录";
            }            

        }
        LblNvbar.CssClass = TextCss;
    }

}


--------------------编程问答-------------------- 以上算法可参考,实现的就是那种效果 --------------------编程问答-------------------- --------------------编程问答-------------------- 自己用DATALIST做一个,可以是POSTBACK,可以是JS的,可以横着放也可以数竖着放。 --------------------编程问答-------------------- --------------------编程问答-------------------- 每日一顶 --------------------编程问答-------------------- 好强呀
--------------------编程问答--------------------
<div id='pager'><span class='current'>1</span><a href="/cate/mvc/2">2</a><a href="/cate/mvc/3">3</a><a href="/cate/mvc/4">4</a><a href="/cate/mvc/5">5</a><a href="/cate/mvc/6">6</a><a href="/cate/mvc/7">7</a><a href="/cate/mvc/8">8</a><a href="/cate/mvc/9">9</a><a href="/cate/mvc/10">10</a><a href="/cate/mvc/11">11</a>...<a href="/cate/mvc/12">12</a><a href="/cate/mvc/2">Next ></a></div>
把样式copy过来 你写个公共类 生成就行了 --------------------编程问答-------------------- 留名。。。 --------------------编程问答-------------------- mark --------------------编程问答--------------------

        /// <summary>
        /// 获取数字分页
        /// </summary>
        /// <param name="currentPageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="recordCount"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        private static string GetNumericPage_New(int currentPageIndex, int pageSize, int recordCount, string url)
        {
            StringBuilder sb = new StringBuilder();
            int pageCount = recordCount % pageSize == 0 ? recordCount / pageSize : recordCount / pageSize + 1;

            int start;
            if (currentPageIndex - 5 > 0)
            {
                start = currentPageIndex - 5;
            }
            else
            {
                start = 1;
            }
            int end;
            if (currentPageIndex + 5 < pageCount)
            {
                end = currentPageIndex + 5;                
            }
            else
            {
                end = pageCount;
            }
            if (end - start < 10)
            {
                if (end < pageCount)
                {
                    end = end + 5 < pageCount ? start + 10 : pageCount;
                }
                if (end == pageCount)
                {
                    start = end - 10 > 0 ? end - 10 : 1;
                }
            }
            if (start > 1)
            {
                string url1 = string.Format(url.ToString(), 1);
                sb.AppendFormat("<span style='border:1px solid blue;padding:2px;font-size:12px;line-height:200%'><a href={0} style='text-decoration:none'>{1}</a></span> ... ", url1, 1);
            }
            for (int i = start; i <= end; i++)
            {
                if (i == currentPageIndex)
                {
                    sb.AppendFormat("<span style='border:1px solid blue;padding:2px;font-size:12px;line-height:200%;background-color:#8EB0DB'><font color=red><b>{0}</b></font></span> ", i);
                }
                else
                {
                    string url1 = string.Format(url.ToString(), i);
                    sb.AppendFormat("<span style='border:1px solid blue;padding:2px;font-size:12px;line-height:200%'><a href={0} style='text-decoration:none'>{1}</a></span> ", url1, i);
                }
            }
            if (end < pageCount)
            {
                string url1 = string.Format(url.ToString(), pageCount);
                sb.AppendFormat("... <span style='border:1px solid blue;padding:2px;font-size:12px;line-height:200%'><a href={0} style='text-decoration:none'>{1}</a></span> ", url1, pageCount);
            }
            return sb.ToString();
        }

    }

上面的代码写出来了可以实现,不过总觉得写的很恶心,不知道哪位大牛可以帮改的更简洁一些 --------------------编程问答--------------------
引用 15 楼 zhulong1111 的回复:
引用楼主 dd__dd 的回复:
http://www.cnblogs.com/cate/mvc/1
上面的连接是要的效果。

/// <summary>
/// 获取数字分页
/// </summary>
/// <param name="currentPageIndex">当前页</param>
/// <param name="pageSize">每页显示条数</param……

呵呵,本人对于算法真的很菜,代码写出来是可以实现,不过因为看了别人的算法感觉很简便,所以转牛角尖,感觉自己写的真的很恶心 --------------------编程问答--------------------

相关链接:
<a href="http://auto.315che.com/leikesasict/">雷克萨斯CT</a>
<a href="http://auto.315che.com/ibiza/">西亚特Ibiza</a>
<a href="http://auto.315che.com/yingfeinidim/">英菲尼迪M35</a>
<a href="http://auto.315che.com/leikesasiis/">雷克萨斯IS</a>
<a href="http://auto.315che.com/yingfeinidig/">英菲尼迪G37</a>
<a href="http://auto.315che.com/leikesasisc/">雷克萨斯SC</a>
<a href="http://auto.315che.com/ougezdx/">讴歌ZDX</a>
<a href="http://auto.315che.com/leikesasilx/">雷克萨斯LX</a>
<a href="http://auto.315che.com/yingfeinidiex/">英菲尼迪EX</a>
<a href="http://auto.315che.com/yingfeinidifx/">英菲尼迪FX</a>
<a href="http://auto.315che.com/binlimulsanne/">穆尚 Mulsanne</a>
<a href="http://auto.315che.com/ougetl/">讴歌TL</a>
<a href="http://auto.315che.com/ougerl/">讴歌RL</a>
<a href="http://auto.315che.com/ougemdx/">讴歌MDX</a>
<a href="http://auto.315che.com/haifeng/"> 海锋</a>
<a href="http://auto.315che.com/leikesasies/"> 雷克萨斯ES</a>
<a href="http://auto.315che.com/haixun/">  海迅</a>
<a href="http://auto.315che.com/haiyu/"> 海域</a>
--------------------编程问答-------------------- --------------------编程问答-------------------- 粘贴错了。不好意思啊

#region 分页代码
        public static string PageList(int SumCount,int size, string funClick, int countNum, int currentPage)
        {
            int pageCount = 0;
            int stepNum = 5;
            int pageRoot = 1;
            string pageStr = "";
            int pageSize = size;
            if (countNum % pageSize == 0)
            {
                pageCount = countNum / pageSize;
            }
            else
            {
                pageCount = countNum / pageSize + 1;
            }
            pageStr = "<tr><td colspan=\"8\" id='pager'>分页导航:总共:"+SumCount+"条 " + currentPage.ToString() + "/" + pageCount.ToString() + "页";
            if (currentPage - stepNum > 1)
            {
                pageRoot = currentPage - stepNum;
            }
            int pageFoot = pageCount;
            if (currentPage + stepNum < pageCount)
            {
                pageFoot = currentPage + stepNum;
            }
            if (pageRoot == 1)
            {
                if (currentPage == 1)
                {
                    pageStr += "<img src=\"image/first.gif\" border=\"0\"></a>";
                    pageStr += "<img src=\"image/pre.gif\" border=\"0\"></a> ";
                }
                else
                {
                    pageStr += "<a href='#page.1' onclick='" + funClick + "(1)' title='首页'><img src=\"image/first.gif\" border=\"0\"></a>";
                    pageStr += "<a href='#page." + Convert.ToString(currentPage - 1) + "' onclick='" + funClick + "(" + Convert.ToString(currentPage - 1) + ")' title='上页'><img src=\"image/pre.gif\" border=\"0\"></a> ";
                }
            }
            else
            {
                pageStr += "<a href='#page.1' onclick='" + funClick + "(1)' title='首页'><img src=\"image/first.gif\" border=\"0\"></a>";
                pageStr += "<a href='#page." + Convert.ToString(currentPage - 1) + "' onclick='" + funClick + "(" + Convert.ToString(currentPage - 1) + ")' title='上页'><img src=\"image/pre.gif\" border=\"0\"></a>...";
            }
            for (int i = pageRoot; i <= pageFoot; i++)
            {
                if (i == currentPage)
                {
                    pageStr += "<font color='red'>[" + i.ToString() + "]</font> ";
                }
                else
                {
                    pageStr += "<a href='#page." + i.ToString() + "' onclick='" + funClick + "(" + i.ToString() + ")'>[" + i.ToString() + "]</a> ";
                }
                if (i == pageCount)
                    break;
            }
            if (pageFoot == pageCount)
            {
                if (pageCount == currentPage)
                {
                    pageStr += "<img src=\"image/next.gif\" border=\"0\"></a>";
                    pageStr += "<img src=\"image/last.gif\" border=\"0\"></a>";
                }
                else
                {
                    pageStr += "<a href='#page." + Convert.ToString(currentPage + 1) + "' onclick='" + funClick + "(" + Convert.ToString(currentPage + 1) + ")' title='下页'><img src=\"image/next.gif\" border=\"0\"></a>";
                    pageStr += "<a href='#page." + pageCount.ToString() + "' onclick='" + funClick + "(" + pageCount.ToString() + ")' title='尾页'><img src=\"image/last.gif\" border=\"0\"></a>";
                }
            }
            else
            {
                pageStr += "... <a href='#page." + Convert.ToString(currentPage + 1) + "' onclick='" + funClick + "(" + Convert.ToString(currentPage + 1) + ")' title='下页'><img src=\"image/next.gif\" border=\"0\"></a>";
                pageStr += "<a href='#page." + pageCount.ToString() + "' onclick='" + funClick + "(" + pageCount.ToString() + ")' title='尾页'><img src=\"image/last.gif\" border=\"0\"></a>";
            }
            pageStr += "</tr>";
            return pageStr;
        }
        #endregion

  <script type="text/javascript">
           var hash = window.location.hash;
           hash = hash.substring(1, hash.length);
           var arr = hash.split('#')[0].split('/');
           keyValue = arr[0].split('.')[1];
           function pageload() {
               document.getElementById("msgList").innerHTML = "<img src=\"http://www.315che.com/images/submiting.gif\" style=\"padding-top:50px;\">";
               if (keyValue)
                   showList(keyValue);
               else
                   showList(1);
           }
           function showList(page) {
               keyValue = page;
               var msgList = document.getElementById("msgList");
               Showweekdetail.msgList(
            page, document.getElementById('txtSeaKey').value, document.getElementById("newseoid").value,
            function(result) {
                msgList.innerHTML = result.value;
            }
        );
           }
   </script>

        [Ajax.AjaxMethod()]
        public string msgList(int currentPage,string txtcarkey,int seoid)
        {
            StringBuilder sb = new StringBuilder(); 
            DateTime date = DateTime.Now;
            string sqlStr = string.Empty,where=string.Empty;
            int countNum = 0;
            int pageSize = 50;
            using (SqlDataReader dr = BaseData.SqlHelper.ExecuteReader(string.Format(@"select count(1) as co from SE_CarSeries where {0} carkey like '%{1}%' and islive<>0 and islive<>4", seoid == 0 ? "" : "seo = " + seoid + "  and ", txtcarkey.Replace("'", "")), null))
            {
                if (dr != null)
                {
                    if (dr.Read())
                        countNum = Int32.Parse(dr["co"].ToString());
                }
            }
            if (currentPage > 1)
            {
                where = string.Format(@"  and catalogid not in(select top {0} catalogid from SE_CarSeries where islive<>0 and islive<>4 and carkey like '%{1}%' {2} order by isHot desc,catalogid desc)", pageSize * (currentPage - 1), txtcarkey.Replace("'", ""), seoid == 0 ? "" : "and seo=" + seoid);
            }
            sqlStr = string.Format(@"Select Top {0} * from SE_CarSeries where islive<>0 and islive<>4 and carkey like'%{1}%' {2}  {3} order by isHot desc,catalogid desc", pageSize, txtcarkey.Replace("'", ""), seoid == 0 ? "" : "and seo=" + seoid, where);
            DataTable dt = SqlHelper.ExecuteDataTable(sqlStr, null);
            sb.Append("<table width=\"1000px\" align=\"center\"  border=\"1px\"  cellspacing=\"0\" cellpadding=\"4\"><tr style=\"color:White;background-color:#5D7B9D;font-weight:bold;height:20px;\"").Append("><td>序号</td><td>关键词</td><td>").Append(date.ToString("yyyy-MM-dd")).Append("</td><td>").Append(date.AddDays(-1).ToString("yyyy-MM-dd")).Append("</td><td>").Append(date.AddDays(-2).ToString("yyyy-MM-dd")).Append("</td><td>").Append(date.AddDays(-3).ToString("yyyy-MM-dd")).Append("</td><td>").Append(date.AddDays(-4).ToString("yyyy-MM-dd")).Append("</td><td>").Append(date.AddDays(-5).ToString("yyyy-MM-dd")).Append("</td><td>").Append(date.AddDays(-6).ToString("yyyy-MM-dd")).Append("</td></tr>");
            if (dt != null && dt.Rows.Count > 0)
            {
                for (int i = 0; i <= dt.Rows.Count - 1; i++)
                {
                    int catalogid = 0;
                    if (int.TryParse(dt.Rows[i]["catalogid"].ToString(), out  catalogid))
                    {
                        sb.Append("<tr ").Append(i % 2 == 0 ? " style=\"background-color: #EEE;\"" : "").Append("><td>").Append(i+1).Append("</td><td>").Append(dt.Rows[i]["carkey"]).Append("</td><td>").Append(getbaidurank(catalogid, date)).Append("</td><td>").Append(getbaidurank(catalogid, date.AddDays(-1))).Append("</td><td>").Append(getbaidurank(catalogid, date.AddDays(-2))).Append("</td><td>").Append(getbaidurank(catalogid, date.AddDays(-3))).Append("</td><td>").Append(getbaidurank(catalogid, date.AddDays(-4))).Append("</td><td>").Append(getbaidurank(catalogid, date.AddDays(-5))).Append("</td><td>").Append(getbaidurank(catalogid, date.AddDays(-6))).Append("</td></tr>");
                    }
                }
            }
            else sb.Append("<tr></td rolspan=\"9\">暂无数据</td></tr>");
            sb.Append(Data.PageList(countNum,pageSize, "showList", countNum, currentPage));
            sb.Append("</table>");
            return sb.ToString();
        }

--------------------编程问答-------------------- 顶嘎嘎~ --------------------编程问答-------------------- 顶下。。。
asp.net page分页 你可以参考下 --------------------编程问答-------------------- 学习了 顶起~~~ --------------------编程问答-------------------- 怎么写,也需要你sql语句调用呀!
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,