• 分页


    两个最重要的变量:
    PageSize - 每页显示的记录条数
    PageNO - 当前要显示第几页

    两个重要的函数:
    1.获取指定页面记录的函数。
    2.获取总页数的函数。

    最核心的:"上一页"和"下一页"
    1.使用超链接HyperLink控制。
    2.使用代码给HyperLink的NavigateURL赋值。
    linkNext.NavigateUrl = "Default.aspx?pageno=" + (nowPage + 1).ToString();
    linkPrev.NavigateUrl = "Default.aspx?pageno=" + (nowPage - 1).ToString();
    nowPage是用Request["pageno"]获取过来的当前页号。

    完善1:控制“上一页”“下一页”是否可用
    1.是否是首页。nowPage==1??
    2.是否是尾页。调用获取总页数的函数,看看nowPage是否与之相等

    完善2:加“首页”和尾页
    1.首页,是超链接,总是导到第一页去。
    linkFirst.NavigateUrl = "Default.aspx?pageno=1";
    2.尾页,是超链接,总是导到与总页数相同的那相页号上去。
    linkLast.NavigateUrl = "Default.aspx?pageno=" + pageCount;
    完善3:随机跳转
    1.文本框+按钮
    2.使用Response.Redirect("地址")跳转
    3.判断边界。小于第一页,大于最后一页。
    int goNO = Convert.ToInt32(txtPageNo.Text);
    if (goNO < 1)
    {
    Response.Redirect("Default.aspx");
    }
    else if (goNO > GetPageCount())
    {
    Response.Redirect("Default.aspx?pageno=" + GetPageCount());
    }
    else
    {
    Response.Redirect("Default.aspx?pageno="+goNO);
    }

    public partial class _Default : System.Web.UI.Page
    {
        private MyDBDataContext _Context = new MyDBDataContext();
        private const int PageSize = 3;
    
        public List <Car> GetPageCar(int PageNo)
        {
            var query = _Context.Car.Skip(PageSize * (PageNo - 1)).Take(PageSize );
            return query.ToList();
        }
    
        public int GetPageCount()
        {
            int rowsCount = _Context.Car.Count();
            int PageCount = (int)Math.Ceiling(1.0*rowsCount /PageSize );
            return PageCount;
        }
    
        protected void Page_Load(object sender, EventArgs e)
        {
            int nowPage = 1;
            if (Request["pageno"] != null)
            {
                nowPage = Convert.ToInt32(Request["pageno"]);
            }
            List<Car> list = GetPageCar(nowPage );
            //给repeater数据
            Repeater1.DataSource = list;
            Repeater1.DataBind();
    
            //给上一页下一页数据
            int PageCount = GetPageCount();
    
            //控制下一页
            if (PageCount == nowPage)
            {
                linkNext.Enabled = false;
            }
            else
            {
                linkNext.Enabled = true;
                linkNext.NavigateUrl = "Default.aspx?pageno=" + (nowPage + 1).ToString();
            }
    
            //控制上一页
            if (nowPage == 1)
            {
                linkPrev.Enabled = false;
            }
            else
            {
                linkPrev.Enabled = true;
                linkPrev.NavigateUrl = "Default.aspx?pageno=" + (nowPage - 1).ToString();
            }
    
            //控制首页
            linkFirst.NavigateUrl = "Default.aspx?pageno=1";
            //控制尾页
            linkLast.NavigateUrl = "Default.aspx?pageno=" + PageCount;
            
        }
    
        //跳转
        protected void btnGo_Click(object sender, EventArgs e)
        {
            int GoNo = Convert.ToInt32(txtPageNo.Text );
            if (GoNo < 1)
            {
                Response.Redirect("Default.aspx");
            }
            else if (GoNo > GetPageCount())
            {
                Response.Redirect("Default.aspx?pageno=" + GetPageCount());
            }
            else
            {
                Response.Redirect("Default.aspx?pageno=" + GoNo);
            }
        }
    }
  • 相关阅读:
    1046 A^B Mod C
    1019 逆序数
    1012 最小公倍数LCM
    1011 最大公约数GCD
    序列化
    bigdecimal
    equals 和hashcode
    java多线程-读写锁原理
    Java并发编程:volatile关键字解析
    面试
  • 原文地址:https://www.cnblogs.com/qianxiaojinnian/p/4715215.html
Copyright © 2020-2023  润新知