zoukankan      html  css  js  c++  java
  • ASP.NET中的分页剖析(二)

    由于控件内置的分页功能使用比较简单,在这里就不在赘述了。

    首先谈一下使用ASP.NET提供的分页类PagedDataSource的用法,分页剖析(一)已经做了些介绍,这里给出具体代码帮助理解。

    public partial class BookList : System.Web.UI.Page
    {   
        protected void Page_Load(object sender, EventArgs e)
        {       
            if (!IsPostBack)
            {
                //首次加载,赋初值
                ViewState["Page"] = 0;
                ViewState["Order"] = "";
                try
                {
                    ViewState["typeid"] = Convert.ToInt32(Request.QueryString["typeid"]);
                }
                catch
                {
                    ViewState["typeid"] = -1;
                }
                MyDataBind();
            }    
        }
           
        private void MyDataBind()
        {
            PagedDataSource pdsBooks = new PagedDataSource();
            //对PagedDataSource 对象的相关属性赋值       
            pdsBooks.DataSource = BookManager.GetOrderedSmallBooksByCategoryId(Convert.ToInt32(ViewState["typeid"]), (string)ViewState["Order"]);
            pdsBooks.AllowPaging = true;
            pdsBooks.PageSize = 4;
            pdsBooks.CurrentPageIndex = Pager;
            lblCurrentPage.Text = "第 " + (pdsBooks.CurrentPageIndex + 1).ToString() + " 页 共 " + pdsBooks.PageCount.ToString()+" 页";
            SetEnable(pdsBooks);       

            //把PagedDataSource 对象赋给DataList控件,其ID为dlBooks
            dlBooks.DataSource = pdsBooks;
            dlBooks.DataBind();
        }
        /// <summary>
        /// 获得封面的url
        /// </summary>
        /// <param name="isbn"></param>
        /// <returns></returns>
        public string GetUrl(string isbn)
        {
            return StringHandler.CoverUrl(isbn);
        }
        /// <summary>
        /// 截断图书显示内容
        /// </summary>
        /// <param name="content"></param>
        /// <param name="num"></param>
        /// <returns></returns>
        public string GetCut(string content, int num)
        {
            return StringHandler.CutString(content, num);
        }


        #region  排序
        protected void btnDate_Click(object sender, EventArgs e)
        {
            ViewState["Order"] = "PublishDate";
            Pager = 0;
            btnDate.Enabled = false;
            btnPrice.Enabled = true;
            MyDataBind();
        }
        protected void btnPrice_Click(object sender, EventArgs e)
        {
            ViewState["Order"] = "UnitPrice";
            Pager = 0;
            btnPrice.Enabled = false;
            btnDate.Enabled = true;
            MyDataBind();
        }
        #endregion

        #region  翻页
        private void SetEnable(PagedDataSource pds)
        {
            btnPrev.Enabled = true;
            btnNext.Enabled = true;
            if (pds.IsFirstPage)
                btnPrev.Enabled = false;

            if (pds.IsLastPage)
                btnNext.Enabled = false;
        }
        protected void btnNext_Click(object sender, EventArgs e)
        {
            Pager++;
            MyDataBind();
        }
        protected void btnPrev_Click(object sender, EventArgs e)
        {
            Pager--;
            MyDataBind();
        }
        /// <summary>
        /// 当前页数
        /// </summary>
        private int Pager
        {
            get { return (int)ViewState["Page"]; }
            set { ViewState["Page"] = value; }
        }
        #endregion
    }

        这种用法也比较简单,在此就不多说了。如果有疑问,可以给我留言解答。分页剖析(三)准备给大家讲下如何使用基于SQL语句进行分页。本人比较倾向于此种分页方式,首先效率高,前面已经说过原理了。【待续...】

  • 相关阅读:
    函数重载和函数指针在一起
    Uva
    Uva
    Uva
    Uva
    Uva
    CCPC-Wannafly-day5
    CCPC-Wannafly-day3
    CCPC-Wannafly-day2
    CCPC-Wannafly-Winter 2020.01.12总结
  • 原文地址:https://www.cnblogs.com/phone/p/1827198.html
Copyright © 2011-2022 走看看