AspNetPager控件实现真分页

随着牛腩新闻发布系统的发布,这个项目也算接近了尾声。最后有个分页功能,于是决定实践一下。

先来了解一下真假分页:

假分页

利用GridView进行分页,先将所有数据都取出来,然后根据页码展示信息。
方法:AllowPaging属性设置为True(允许分页), PageSize属性设置具体数字。(每页想要显示的条数)。

真分页

利用ASPNETPage分页控件来进行分页,只选取当前页要展示给用户的数据。

ASPNETPage分页控件的使用

第一步:下载ASPNETPage分页控件

由于VS自带的组件没有AspNetPager分页控件,所以我们先下载控件,然后添加到VS组件中。
下载地址:http://www.webdiyer.com/aspnetpager/downloads/
或者:http://www.jb51.net/codes/40809.html

第二步:加载AspNetPager.dll

工具箱右键–选择项—.net framework组件—浏览—选择下载好的ASPNETPage.dll文件。然后将工具箱出现的分页控件拖到web页面上。同时在html页面顶部添加引用:

<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>  
第三步:数据库添加存储过程

这里写图片描述

第四步:D层代码,调用存储工程
public DataTable SelectNewsbyPage(string startIndex,string endIndex) //当前页的首条页码参数starIndex和最后页码参数endIndex
        {
            DataTable dt = new DataTable();
            string sql = "news_SelectPage1";//存储过程名
	        SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@startIndex", startIndex ),
            new SqlParameter("@endIndex", endIndex )};
            dt = sqlhelper.ExecuteQuery(sql,paras ,CommandType.StoredProcedure );
            return dt;
        }
B层代码,调用D层方法
public DataTable SelectNewsPage(string startIndex,string endIndex)
        {
            return newsdao.SelectNewsbyPage(startIndex ,endIndex );
        }
第五步:Web层中newsmanager.aspx中加入代码:
<div class="footer"> 
 <webdiyer:AspNetPagerID="AspNetPager1"runat="server"onpagechanged="AspNetPager1_PageChanged" CurrentPageButtonPosition="Center" Width="90%"  HorizontalAlign="center" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PageSize="5" PrevPageText="上一页"  AlwaysShow="True" ></webdiyer:AspNetPager> 
 </div>  
第六步:Web后台 newsmanager.aspx.cs代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
namespace UI.admin
{
    public partial class newsmanager : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
                //已登录  
                if (!Page.IsPostBack)
                {
                    //判断session里面是否存在管理员
                    if (Session["admin"] != null && Session["admin"].ToString() == "niunan")
                    {
                    //设定分页控件总得记录条数
                    AspNetPager1.RecordCount = new NewsManager().SelectAll().Rows.Count;
                    
                    BindNews();
                    }
                else
                    {
                        //未登录
                        Response.Redirect("ghtLogin.aspx");

                    }
            }
        }
        //分页控件
        protected void AspNetPager1_PageChanged(object sender, EventArgs e)
        { 
            //当前页切换时,更新绑定的新闻  
            BindNews();
        }
        //重构方法 --绑定新闻列表
        private void BindNews()
        { 
        //根据当前页起止记录的序号,从数据库中选出区间内新闻。
            repNews.DataSource = new NewsManager().SelectNewsPage(AspNetPager1.StartRecordIndex.ToString(), AspNetPager1.EndRecordIndex.ToString());      
            repNews.DataBind();
        }

        //删除按钮
        protected void lbtnDel_Click(object sender, EventArgs s)
        {
            string id = ((LinkButton)sender).CommandArgument;
            bool b = new NewsManager().Delete(id);

            if (b)
            {
                BindNews();
            }
            else
            {
                Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('未知原因导致删除失败');</script>");
            }
        }

第七步:运行调试,结果展示:

这里写图片描述

小结:只有自己动手去做了,才能真正明白其中的奥秘。有些东西只可意会不可言传。实践出真知!

评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值