随着牛腩新闻发布系统的发布,这个项目也算接近了尾声。最后有个分页功能,于是决定实践一下。
先来了解一下真假分页:
假分页
利用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>");
}
}