分页
两个最重要的变量:
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); } } }