分页简介
在很多地方,我们都能见到如下图所示的分页标签。因为,很多时候分页的方式浏览数据列表,会很大程度上方便我们的查看,也让我们可以对进度可以有一个估算。在网页中制作分页的浏览格式,一般有两种方式,即真分页和假分页,它们的定义如下:
真分页,只从数据库中选择当前页的记录。假分页,事先选择所有的记录后再进行分页。
真分页实现
第一步:添加AspNetPager控件
首先需要下载一个分页的控件,链接是:分页控件,下载源代码及示例项目。然后在我们的工具箱——常规,右键——选择项,浏览找到下载的aspnetpager,找到aspnetpager.dll,路径是Demo——Bin——aspnetpager.dll。此时,我们可以在工具箱——常规中看到一个AspNetPager控件,把它拖到页面的设计视图中。
第二步:代码实现
主要代码展示
(BLL)
<span style="font-family:Microsoft YaHei;font-size:18px;">public class NewsManager
{
private NewsDAO ndao = null;
public NewsManager()
{
ndao = new NewsDAO();
}
public DataTable SelectAll()
{
DataTable dt = new DataTable();
string sql = "select * from news";
dt = new SQLHelper().ExecuteQuery(sql, CommandType.Text);
return dt;
}
public DataTable selectPage(int start,int end)
{
return ndao.SelectPage(start,end);
}
}</span>
(DAL)
<span style="font-family:Microsoft YaHei;font-size:18px;">public DataTable SelectAll()
{
DataTable dt = new DataTable();
string sql = "select * from news";
dt = new SQLHelper().ExecuteQuery(sql, CommandType.Text);
return dt;
}
public DataTable SelectPage(int start , int end)
{
DataTable dt = new DataTable();
string cmdText = "procNewsSelectPage";
SqlParameter[] paras = new SqlParameter[]{
new SqlParameter("@start",start),
new SqlParameter("@end",end)
};
SQLHelper sql = new SQLHelper();
dt = sql.ExecuteQuery(cmdText,paras,CommandType.StoredProcedure);
return dt;
}</span>
(aspx页面)
<span style="font-family:Microsoft YaHei;font-size:18px;">protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataTable dt = new DataTable();
dt = new NewsManager().SelectAll();
anp.RecordCount = dt.Rows.Count;
BindNews();
}
}
private void BindNews()
{
int i = anp.StartRecordIndex;
int j = anp.EndRecordIndex;
GridView1.DataSource = new NewsManager().selectPage(i,j); //获取页面的开始索引和结束索引
GridView1.DataBind();
}
protected void anp_PageChanged(object sender, EventArgs e)
{
BindNews();
}</span>
实现效果图
假分页实现
主要代码展示
(BLL)
<span style="font-family:Microsoft YaHei;font-size:18px;">public class NewsManager
{
private NewsDAO ndao = null;
public NewsManager()
{
ndao = new NewsDAO();
}
public DataTable SelectAll()
{
return ndao.SelectAll();
}
}</span>
(DAL)
<span style="font-family:Microsoft YaHei;font-size:18px;">public class NewsDAO
{
public DataTable SelectAll()
{
DataTable dt = new DataTable();
string sql = "select * from news";
dt = new SQLHelper().ExecuteQuery(sql, CommandType.Text);
return dt;
}
}</span>
(aspx页面)
<span style="font-family:Microsoft YaHei;font-size:18px;">protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindNews();
}
}
private void BindNews()
{
GridView1.DataSource = new NewsManager().SelectAll();
GridView1.DataBind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
//当前索引页更改时激发
BindNews();
}</span>
效果图展示
说明:因为DAL中用到了SQLhelper,因为没有列出它的代码,所以在这里给出假分页的全部源代码和数据库,大家可以下载去实验看效果。
总结
当数据库的数据量达到几百万条的时候,假分页的形式会让网页加载的特别慢,所以一些大网站都会采用真分页的形式。真假分页是视频的最后一讲,终于看完了。(*^_^*)
本文章借鉴了王文茹师姐的博客:http://blog.csdn.net/wangwenru6688/article/details/46763985