读书人

制作分页解决方法

发布时间: 2012-04-05 12:42:39 作者: rapoo

制作分页
我的数据库中有8条记录
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataListDaTabind();
}
}
protected void DataListDaTabind()
{
AccessDataSource ads = new AccessDataSource();
ads.DataFile = "~/App_Data/shopcart.mdb";
ads.SelectCommand = "select * from Product order by productid ASC";
DataView dv = (DataView)ads.Select(DataSourceSelectArguments.Empty);
PagedDataSource objPage = new PagedDataSource();
objPage.DataSource = dv;
objPage.AllowPaging = true;
objPage.PageSize =6;
int TolPage;
TolPage = objPage.PageCount;
int CurPage;
if (Request.QueryString["Page"] != null)
{
CurPage = Convert.ToInt32(Request.QueryString["Page"]);
}
else
{
CurPage = 1;
}
objPage.CurrentPageIndex = CurPage - 1;
lblCurPage.Text = "目前在第" + CurPage.ToString() + "页,共" + TolPage.ToString() + "页";
lnkFirst.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=1";
lnkLast.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + TolPage.ToString();
if (!objPage.IsFirstPage)
{
lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1);
}
else
{
lnkPrev.Visible = false;
lnkFirst.Visible = false;
}
if (!objPage.IsLastPage)
{
lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1);
}
else
{
lnkNext.Visible = false;
lnkLast.Visible = false;
}
DataList1.DataSource = objPage;
DataList1.DataBind();//数据库中有8条记录,运行后共两页当单击下一页时总在这提示错误“索引 -6 不是为负数,就是大于行数”。

求救!!!!

[解决办法]
分页在SQL里面去分 不要这么用。。。

C# code
using System;using System.Collections.Generic;using System.Web;using System.Text;using System.Text.RegularExpressions;    public class PagingCollection<T>    {        private int pagezise;        public int Pagezise        {            get { return pagezise; }            set { pagezise = value; }        }        private int pageindex;        public int Pageindex        {            get { return pageindex; }            set { pageindex = value; }        }        private int TotalCount;        public int TotalCount1        {            get { return TotalCount; }            set { TotalCount = value; }        }        private int TotalPage=0;        public int TotalPage1        {            get { return TotalPage; }            set { TotalPage = value; }        }        private string url;        public string Url        {            get { return url; }            set { url = value; }        }        private string urlparms;        public string Urlparms        {            get {                             return urlparms; }            set { urlparms = value; }        }        /// <summary>        /// 分页数据构造        /// </summary>        /// <param name="source"></param>        /// <param name="pageindex"></param>        /// <param name="pagezise"></param>        /// <param name="totalcount"></param>        /// <param name="url"></param>        public PagingCollection(int pageindex, int pagezise, int totalcount, string url)        {            this.pageindex = pageindex;            this.pagezise = pagezise;            TotalCount = totalcount;            TotalPage = (int)Math.Ceiling(TotalCount / (double)pagezise);            this.url = url;        }        public PagingCollection(int pageindex, int pagezise, int totalcount, string url,string urlparms)        {            this.pageindex = pageindex;            this.pagezise = pagezise;            TotalCount = totalcount;            TotalPage = (int)Math.Ceiling(TotalCount / (double)pagezise);            this.url = url;            this.urlparms = urlparms;        }        #region 分页属性 返回分页数据        public string GetPatePar        {            get            {                if (TotalCount1 > 0)                {                    StringBuilder str = new StringBuilder();                    int startpage = (pageindex - 1) / 10 * 10 + 1;                    int endpage = (pageindex - 1) / 10 * 10 + 10;                    int x = endpage > TotalPage ? TotalPage : endpage;                    str.Append("<div  style=' color:#1E5494;'>共" + TotalPage1 + "页 /  当前第" + pageindex + "页   ");                    if (HasPreviousPage)                    {                        str.Append("<a href=" + url + "?page=1" + GetURLParms + "" + urlparms + ">首页</a> ");                        str.Append("<a href=" + url + "?page=" + (pageindex - 1) + GetURLParms + "" + urlparms + ">上一页</a>");                    }                    else                    {                        str.Append("<a href=#>首页 </a>");                        str.Append("<a href=#>上一页</a>");                    }                    for (int i = startpage; i <= x; i++)                    {                        if (i == pageindex)                        {                            str.Append(string.Format("<a style='margin-left:3px; margin-right:3px;padding:2px 4px 2px 4px;color:red;border:1px solid #cccccc;background-color:#ffffff; '>" + i + "</a>"));                        }                        else                        {                            str.Append(string.Format("<a style='margin-left:3px; margin-right:3px;'  href=" + url + "?page=" + i + GetURLParms + "" + urlparms + ">" + i + "</a>"));                        }                    }                    if (HasNextPage)                    {                        str.Append("<a href=" + url + "?page=" + (pageindex + 1) + GetURLParms + "" + urlparms + ">下一页 </a>");                        str.Append("<a href=" + url + "?page=" + TotalPage + GetURLParms + "" + urlparms + ">尾页</a>");                    }                    else                    {                        str.Append("<a href=#>下一页 </a>");                        str.Append("<a href=#>尾页</a>");                    }                    str.Append("</div>");                    return str.ToString();                }                else                {                    return "<font color=red>暂无数据!</font>";                }            }        }        #endregion        /// <summary>        /// url重写        /// </summary>        private string GetURLParms        {            get            {                    string query = HttpContext.Current.Request.Url.Query;                    query = Regex.Replace(query, @"\?page=\d*", "", RegexOptions.Compiled);                    return query;                          }        }        /// <summary>        ///判断是否有上一页        /// </summary>        public bool HasPreviousPage        {            get            {                return (pageindex > 1);            }        }        /// <summary>        ///判断是否有下一页        /// </summary>        public bool HasNextPage        {            get            {                return (pageindex < TotalPage);            }        }    }    /// <summary>    /// 分页数据类    /// </summary>    /// <typeparam name="T"></typeparam>    public class PageBean<T>    {        IList<T> datasource = new List<T>();        public IList<T> Datasource        {            get { return datasource; }            set { datasource = value; }        }        int pagesum;        public int Pagesum        {            get { return pagesum; }            set { pagesum = value; }        }        public PageBean(IList<T> datasource, int pagesum)        {            this.datasource = datasource;            this.pagesum = pagesum;        }        public PageBean()        {            //            // TODO: 在此处添加构造函数逻辑            //        }} 


[解决办法]
http://www.cnblogs.com/yyl8781697/archive/2012/03/07/aspnetpager.html
简单实用的分页代码,含demo,
希望对LZ有帮助
[解决办法]
嗯 好东西 收藏了
[解决办法]

探讨

我想要的是在我的程序基础上改的,不是你们的代码!但还是很感谢!

读书人网 >asp.net

热点推荐