分页

两个最重要的变量:
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);
        }
    }
}
复制代码
posted @ 2015-08-14 20:39  怎能不累  阅读(122)  评论(0编辑  收藏  举报