花了两天时间,参考别人写好,
首先表数据如下:
直接上代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public partial class learnFenye : System.Web.UI.Page
{
SqlConnection sqlconn;
protected void Page_Load(object sender, EventArgs e)
{
int PageSize = 3;//每页显示条数
int PageCount = 0;//总共页数
int RecordCount = 0;//数据库记录条数
int CurrentPage = 0;//当前页数
string conn = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
sqlconn = new SqlConnection(conn);
sqlconn.Open();
//第一步:首先计算数据库的记录条数
//RecordCount=
RecordCount = CountRecord();
Response.Write("数据库的记录条数有:" + RecordCount + "<br />");
//第二步: 计算页数
PageCount = RecordCount / PageSize;
if (RecordCount % PageSize > 0)//如果整除不了,要多出一页
{
PageCount = PageCount + 1;
}
Response.Write("分页的页数有:" + PageCount + "<br />");
//第三步:获取当前页数
if (Request.QueryString["page"] != null)
{
CurrentPage = Convert.ToInt32(Request.QueryString["page"]);
}
else
{
CurrentPage = 1;//如果没设置,就从第一页开始
}
Response.Write("当前页数是:" + CurrentPage + "<br />");
//第四步: 开始分页
string sql = "SELECT TOP (" + PageSize + ") TicketAutoId, value FROM Ticket ";
sql += "where TicketAutoId not in (select top " + (CurrentPage - 1) * PageSize + " TicketAutoId from Ticket order by TicketAutoId ) ";
sql += " ORDER BY TicketAutoId";
SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
SqlDataReader sqldr = sqlcmd.ExecuteReader();
string HTMLTable;
HTMLTable = "<table>";
while(sqldr.Read())
{
HTMLTable += "<tr><td>"+sqldr.GetInt32(0).ToString()+"</td></tr>";
//Response.Write(sqldr.GetInt32(0));
}
HTMLTable += "</table>";
Response.Write(HTMLTable);
//sqldr.Close();
//第五步:设置首页,上一页,下一页,末页按钮
int pagePre, pageNext;
pagePre = CurrentPage - 1;
pageNext = CurrentPage + 1;
string pageHtml;
if (pagePre == 0)
{
pageHtml = "首页 上页";
}
else
{
pageHtml = "<a href='learnfenye.aspx?page=1'>首页</a> <a href='learnfenye.aspx?page=" + pagePre + "'>上页</a>";
}
if (pageNext > PageCount)
{
pageHtml += " 下页 末页";
}
else
{
pageHtml += " <a href='learnfenye.aspx?page=" + pageNext + "'>下页</a>";
pageHtml += " <a href='learnfenye.aspx?page=" + PageCount + "'>末页</a>";
}
IndexButton.InnerHtml = pageHtml;
}
private int CountRecord()//统计数据库表的记录条数
{
int count = 0;
string sql = "select count(*) from Ticket";
SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
SqlDataReader sqldr = sqlcmd.ExecuteReader();
if (sqldr.Read() != null)
{
count = sqldr.GetInt32(0);
}
sqldr.Close();
return count;
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public partial class learnFenye : System.Web.UI.Page
{
SqlConnection sqlconn;
protected void Page_Load(object sender, EventArgs e)
{
int PageSize = 3;//每页显示条数
int PageCount = 0;//总共页数
int RecordCount = 0;//数据库记录条数
int CurrentPage = 0;//当前页数
string conn = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
sqlconn = new SqlConnection(conn);
sqlconn.Open();
//第一步:首先计算数据库的记录条数
//RecordCount=
RecordCount = CountRecord();
Response.Write("数据库的记录条数有:" + RecordCount + "<br />");
//第二步: 计算页数
PageCount = RecordCount / PageSize;
if (RecordCount % PageSize > 0)//如果整除不了,要多出一页
{
PageCount = PageCount + 1;
}
Response.Write("分页的页数有:" + PageCount + "<br />");
//第三步:获取当前页数
if (Request.QueryString["page"] != null)
{
CurrentPage = Convert.ToInt32(Request.QueryString["page"]);
}
else
{
CurrentPage = 1;//如果没设置,就从第一页开始
}
Response.Write("当前页数是:" + CurrentPage + "<br />");
//第四步: 开始分页
string sql = "SELECT TOP (" + PageSize + ") TicketAutoId, value FROM Ticket ";
sql += "where TicketAutoId not in (select top " + (CurrentPage - 1) * PageSize + " TicketAutoId from Ticket order by TicketAutoId ) ";
sql += " ORDER BY TicketAutoId";
SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
SqlDataReader sqldr = sqlcmd.ExecuteReader();
string HTMLTable;
HTMLTable = "<table>";
while(sqldr.Read())
{
HTMLTable += "<tr><td>"+sqldr.GetInt32(0).ToString()+"</td></tr>";
//Response.Write(sqldr.GetInt32(0));
}
HTMLTable += "</table>";
Response.Write(HTMLTable);
//sqldr.Close();
//第五步:设置首页,上一页,下一页,末页按钮
int pagePre, pageNext;
pagePre = CurrentPage - 1;
pageNext = CurrentPage + 1;
string pageHtml;
if (pagePre == 0)
{
pageHtml = "首页 上页";
}
else
{
pageHtml = "<a href='learnfenye.aspx?page=1'>首页</a> <a href='learnfenye.aspx?page=" + pagePre + "'>上页</a>";
}
if (pageNext > PageCount)
{
pageHtml += " 下页 末页";
}
else
{
pageHtml += " <a href='learnfenye.aspx?page=" + pageNext + "'>下页</a>";
pageHtml += " <a href='learnfenye.aspx?page=" + PageCount + "'>末页</a>";
}
IndexButton.InnerHtml = pageHtml;
}
private int CountRecord()//统计数据库表的记录条数
{
int count = 0;
string sql = "select count(*) from Ticket";
SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
SqlDataReader sqldr = sqlcmd.ExecuteReader();
if (sqldr.Read() != null)
{
count = sqldr.GetInt32(0);
}
sqldr.Close();
return count;
}
}
改进的地方:第三步获取当前页,要判断当前页是否合法。
//第三部:获取当前页数
if (Request.QueryString["page"] != null)
{
int dangqianyeshu = 1;
try
{
dangqianyeshu = Convert.ToInt32(Request.QueryString["page"]);
if (dangqianyeshu > PageCount)
{
Response.Write("超过最大页");
Response.End();
}
}
catch (Exception ex)
{
Response.Write("页数非法!");
}
finally
{
CurrentPage = Convert.ToInt32(dangqianyeshu);
}
}
else
{
CurrentPage = 1;
}
Response.Write("当前页数是:" + CurrentPage + "<br />");
if (Request.QueryString["page"] != null)
{
int dangqianyeshu = 1;
try
{
dangqianyeshu = Convert.ToInt32(Request.QueryString["page"]);
if (dangqianyeshu > PageCount)
{
Response.Write("超过最大页");
Response.End();
}
}
catch (Exception ex)
{
Response.Write("页数非法!");
}
finally
{
CurrentPage = Convert.ToInt32(dangqianyeshu);
}
}
else
{
CurrentPage = 1;
}
Response.Write("当前页数是:" + CurrentPage + "<br />");
读取数据库第一条数据,有专门的读取方法。比如getValue方法,注意getValue方法是返回的是object类型,要转换。