您的位置:首页 > 编程语言 > ASP

AspNetPager控件实现网页分页显示

2017-07-28 10:11 453 查看
AspNetPager控件:

在ASP.NET中,虽然自带了一个可以分页的DataGrid控件,但是该控件只能查询数据表中所有的记录,如果我们存放的数据达到1000万或者更多的时候,如果全部查询出来,不仅需要很多的时候,还会占用系统内存。那么有没有一种方法是当我想去看第几页的内容的时候,才去把该页的内容加载出来?那就是AspNetPage控件。AspNetPage控件将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现分页导航功能的地方

AspNetPager控件是一个外部控件,当我们需要的时候需要下载.

AspNetPager控件:代码实现:

Web层代码:

protected void anp_PageChanged(object sender, EventArgs e)
{
PageChange();
}

//分页显示方法
private void PageChange()
{
//分页变量定义
NewsManager nm = new NewsManager();
DataTable temptbl = new DataTable();   //临时表

int startRecord;   //开始记录数
int endRecord;   //结束记录数
int size = anp.PageSize;  //每页显示的记录条数

//分页显示
anp.RecordCount = nm.selectAll().Rows.Count;  //新闻记录总数
//给startRecord与endRecord赋初值
startRecord = 0;
endRecord = 0;
//获取当前分页页码
int i = anp.CurrentPageIndex - 1;
//根据页面查询数据
startRecord = size * i + 1;
endRecord = startRecord + size-1;
repNews.DataSource = nm.Paging(startRecord, endRecord);
repNews.DataBind();
}


BLL层代码

//调用DAL层分页查询方法
public DataTable Paging(int startRecord, int endRecord)
{
return ndao.Paging(startRecord,endRecord);
}


DAL层

public DataTable Paging(int startRecord, int endRecord)
{
DataTable dt = new DataTable();

//此语句是建立一个临时表temptb1,ROW_NUMBER() over是先按id号降序排列这些记录,然后再给每条记录返回一个序号作为行号,并且每次查询只是查询到当前页的记录,而不是所有的记录。
string sql="with temptb1 as(select ROW_NUMBER() over (order by id desc)as 行号,* from news)select * from temptb1 where 行号 between "+startRecord +" and "+endRecord ;

SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter ("@startRecord",startRecord),
new SqlParameter ("@endRecord",endRecord)
};

dt = sqlHelper.ExecuteQuery(sql, CommandType.Text,paras);

return dt;
}


总结:

每学习一个东西之前,都需要知道他解决了什么问题,为什么要学习它,在学习的过程中掌握住80%的东西,才有效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: