【牛腩新闻发布系统】数据表分页显示——真假分页

分页简介


       在很多地方,我们都能见到如下图所示的分页标签。因为,很多时候分页的方式浏览数据列表,会很大程度上方便我们的查看,也让我们可以对进度可以有一个估算。在网页中制作分页的浏览格式,一般有两种方式,即真分页和假分页,它们的定义如下 真分页,只从数据库中选择当前页的记录。假分页,事先选择所有的记录后再进行分页。



真分页实现


第一步:添加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>

实现效果图




说明:因为DAL中用到了SQLhelper,因为没有列出它的代码,所以在这里给出假分页的全部源代码数据库,大家可以下载去实验看效果。

假分页实现

主要代码展示

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

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值