花了两天时间,参考别人写好,
首先表数据如下:
直接上代码:
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类型,要转换。