实现分页可以利用两个控件:GridView控件和DataList控件
GridView控件是一种数据绑定控件,以表格的形式显示数据,并且自身内置分页功能,支持基本的分页实现.
主要功能代码:
//前端页面:
<div>
<asp:GridView ID="GridView1" runat="server" OnPageIndexChanging="GridView1_PageIndexChanging">
</asp:GridView>
</div>
//后端数据:
//PageIndexChanging方法实现分页功能
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
dbind();
}
//封装分页数据的方法
public void dbind()
{
newsClass cs = new newsClass();
string sql="select * from List_Info";
this.GridView1.DataSource = cs.GetDataSet(sql);
this.GridView1.DataBind();
}
DataList控件也是数据绑定控件,借助PagedDataSource类实现的.
实现过程:
D层://计算数据的总条数
public int GetRecordCount()
{
string sql = "select count(*)from List_Info";
return Convert.ToInt32(SqlHelper.Getcount(sql));
}
D层://获取分页数据范围
public DataSet GetPageList(int start, int end)
{
string sql = "select * from (select * ,row_number()over(order by id)as num from List_Info)as t where t.num>=@start and t.num<=@end";
SqlParameter[] ps =
{
new SqlParameter("@start",SqlDbType.Int,4),
new SqlParameter("@end", SqlDbType.Int, 4),
};
ps[0].Value = start;
ps[1].Value = end;
return SqlHelper.ExecuteNonQuery(sql, ps);
}
B层://获取总页数的数据,利用Math.Ceiling算法+1
UserManagerDal mage = new UserManagerDal();
/// <summary>
/// 获取总页数
/// </summary>
/// <param name="pageSize"></param>
/// <returns></returns>
public int GetPageCount(int pageSize)
{
int recordCount = mage.GetRecordCount();
int pageCount = Convert.ToInt32(Math.Ceiling((double)recordCount / pageSize));
return pageCount;
}
B层://逻辑判断分页数据范围
/// <summary>
/// 获取指定范围的分页数据
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
public List<Lists>GetPageList(int pageIndex,int pageSize)
{
int start = (pageIndex - 1) * pageSize + 1;
int end = pageIndex * pageSize;
DataSet ds = mage.GetPageList(start, end);
return DataTableToList(ds.Tables[0]);
}
Web.cs层:
protected void Page_Load(object sender, EventArgs e)
{
//首次进入;
if (!IsPostBack)
{
//调用封装方法;
ListPage();
}
}
public int PageCount{get;set;}
public int PageIndex{get;set;}
//分页的封装方法;
protected void ListPage()
{
int pageIndex;
if (!int.TryParse(Request["pageIndex"],out pageIndex))
{
pageIndex = 1;
}
int pageSize = 10;
UserManagerBll mage = new UserManagerBll();
int pageCount = mage.GetPageCount(pageSize);
PageCount = pageCount;
//三元表达式,进行判断;
pageIndex = pageIndex < 1 ? 1 : PageIndex;
pageIndex = pageIndex > pageCount ? pageCount : PageIndex;
PageIndex = pageIndex;
//调用B层的分页数据范围的方法;
this.ListPage.DataSource = UserManagerBll.GetPageList(pageIndex, pageSize);
this.ListPage.DataBind();
}
页面显示:
<div class="pagelist">
<%=common.PageBarHelper.GetPageBar(PageIndex,PageCount)%>
</div>