昨天翻书看到书上不用控件直接分页。。。
然后好开心啊。。。因为一直想这么做。可是没有做好。。我好笨啊。。。
一直都知道asp时候不都是直接用document.write输出表格并显示数据吗。但是自己太懒。。
幸运的是昨天看到了。。哈哈。。其实我很久以前就看到了吧。。就是没有自己敲下。
废话不说了。。。把代码贴出来备忘吧
直接后代代码了。。。
const int Record_Per_Page = 10; //定义每页现实记录数
int nPageCount; //定义总页数
int nPage; //定义当前页
int nRecCount; //定义总记录数
protected void Page_Load(object sender, EventArgs e)
{
PageDisplay();
}
private void PageDisplay()
{
//连接数据库获取数据,并添加数据到DataTable中
SqlConnection sqlConn = new SqlConnection();
SqlCommand sqlCmd = new SqlCommand();
SqlDataAdapter sqlda = new SqlDataAdapter();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
try
{
sqlConn.ConnectionString = "server=.;database=Depart;uid=sa;pwd=123456";
sqlCmd.Connection = sqlConn;
sqlCmd.CommandText = "select departid,departname from DepartInfo";
sqlda.SelectCommand = sqlCmd;
sqlda.Fill(ds, "DepartInfo");
dt = ds.Tables[0];
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
//获得总记录数
nRecCount = dt.Rows.Count;
StringBuilder strHtml = new StringBuilder("");
//判断是否存在记录
if (nRecCount > 0)
{
//确定数据记录要实现的页面
nPageCount = nRecCount / Record_Per_Page;
//如果余数大于0,则剩下得新得页面显示
if (nRecCount % Record_Per_Page > 0)
nPageCount++;
//从请求字符串中获得当前需要显示得页数
nPage = Convert.ToInt32(Request.QueryString["page"]);
if (nPage < 1)
nPage = 1;
if (nPage > nPageCount)
nPage = nPageCount;
//将所有得 页数(页编码)显示到屏幕上。并作连接
for (int i = 1; i <= nPageCount; i++)
{
strHtml.Append("<a href='Default.aspx?page=" + i + "'>");
if (i == nPage)
strHtml.Append("<b>" + i + "</b>");
else
strHtml.Append(i);
strHtml.Append("</a>");
}
Response.Write(strHtml);
//确认当前页面得开始记录和终止记录
int nStart = Record_Per_Page * (nPage - 1);
int nEnd = nStart + Record_Per_Page - 1;
if (nEnd > nRecCount - 1)
nEnd = nRecCount - 1;
//用表格得形式在屏幕输出记录
//输出表头
Response.Write("<table border='1' cellpadding='0' cellspacing='0' style='border-collapse' bordercolor='#111111' bgcolor='#ffffff'><tr>");
Response.Write("<td>分类号</td><td>分类名称</td></tr>");
//清空对象得字符串以便构建心得字符串
strHtml.Remove(0, strHtml.Length);
//显示当前页中得每一条记录
for (int i = nStart; i <= nEnd; i++)
{
strHtml.Append("<tr>");
for (int j = 0; j < 2; j++)
{
strHtml.Append("<td>" + dt.Rows[i][j].ToString() + "</td>");
}
strHtml.Append("</tr>");
}
strHtml.Append("</table>");
Response.Write(strHtml);
strHtml.Remove(0, strHtml.Length);
}
sqlConn.Close();
}
以上代码是直接全部页数都显示出来 ,样式是 1 2 3 4 5 6 、、、、
下面的代码比上面的好一点,显示为 首页 下一页 尾页 当前页和总共页数。。。呵呵
const int Record_Per_Page = 10; //定义每页现实记录数
int nPageCount; //定义总页数
int nPage; //定义当前页
int nRecCount; //定义总记录数
protected void Page_Load(object sender, EventArgs e)
{
PageDisplay();
}
private void PageDisplay()
{
//连接数据库获取数据,并添加数据到DataTable中
SqlConnection sqlConn = new SqlConnection();
SqlCommand sqlCmd = new SqlCommand();
SqlDataAdapter sqlda = new SqlDataAdapter();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
try
{
sqlConn.ConnectionString = "server=.;database=Depart;uid=sa;pwd=123456";
sqlCmd.Connection = sqlConn;
sqlCmd.CommandText = "select departid,departname from DepartInfo";
sqlda.SelectCommand = sqlCmd;
sqlda.Fill(ds, "DepartInfo");
dt = ds.Tables[0];
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
//获得总记录数
nRecCount = dt.Rows.Count;
StringBuilder strHtml = new StringBuilder("");
//判断是否存在记录
if (nRecCount > 0)
{
//确定数据记录要实现的页面
nPageCount = nRecCount / Record_Per_Page;
//如果余数大于0,则剩下得新得页面显示
if (nRecCount % Record_Per_Page > 0)
nPageCount++;
//从请求字符串中获得当前需要显示得页数
nPage = Convert.ToInt32(Request.QueryString["page"]);
if (nPage < 1)
nPage = 1;
if (nPage > nPageCount)
nPage = nPageCount;
//本例中使用分野技术
if (nPage == 1)
{
strHtml.Append("<a href='PageDiv.aspx?page=1'>首页</a>")
.Append("<a href='PageDiv.aspx?page=")
.Append(nPage + 1)
.Append("'>下一页</a>")
.Append("<a href='PageDiv.aspx?page=")
.Append(nPageCount)
.Append("'>尾页</a>")
.Append(" 页次:")
.Append(nPage.ToString())
.Append("/")
.Append(nPageCount.ToString())
.Append("<br>");//先是当前业和合计页数
}
else if (nPage == nPageCount)
{
strHtml.Append("<a href='PageDiv.aspx?page=1'>首页</a>")
.Append("<a href='PageDiv.aspx?page=")
.Append(nPage - 1)
.Append("'>上一页</a>")
.Append("<a href='PageDiv.aspx?page=")
.Append(nPageCount)
.Append("'>尾页</a>")
.Append(" 页次:")
.Append(nPage.ToString())
.Append("/")
.Append(nPageCount.ToString())
.Append("<br>");//先是当前业和合计页数
}
else
{
strHtml.Append("<a href='PageDiv.aspx?page=1'>首页</a>")
.Append("<a href='PageDiv.aspx?page=")
.Append(nPage - 1)
.Append("'>上一页</a>")
.Append("<a href='PageDiv.aspx?page=")
.Append(nPage + 1)
.Append("'>下一页</a>")
.Append("<a href='PageDiv.aspx?page=")
.Append(nPageCount)
.Append("'>尾页</a>")
.Append(" 页次:")
.Append(nPage.ToString())
.Append("/")
.Append(nPageCount.ToString())
.Append("<br>");//先是当前业和合计页数
}
Response.Write(strHtml);
/*
//将所有得 页数(页编码)显示到屏幕上。并作连接
for (int i = 1; i <= nPageCount; i++)
{
strHtml.Append("<a href='Default.aspx?page=" + i + "'>");
if (i == nPage)
strHtml.Append("<b>" + i + "</b>");
else
strHtml.Append(i);
strHtml.Append("</a>");
}
Response.Write(strHtml);
*/
//确认当前页面得开始记录和终止记录
int nStart = Record_Per_Page * (nPage - 1);
int nEnd = nStart + Record_Per_Page - 1;
if (nEnd > nRecCount - 1)
nEnd = nRecCount - 1;
//用表格得形式在屏幕输出记录
//输出表头
Response.Write("<table border='1' cellpadding='0' cellspacing='0' style='border-collapse' bordercolor='#111111' bgcolor='#ffffff'><tr>");
Response.Write("<td>分类号</td><td>分类名称</td></tr>");
//清空对象得字符串以便构建心得字符串
strHtml.Remove(0, strHtml.Length);
//显示当前页中得每一条记录
for (int i = nStart; i <= nEnd; i++)
{
strHtml.Append("<tr>");
for (int j = 0; j < 2; j++)
{
strHtml.Append("<td>" + dt.Rows[i][j].ToString() + "</td>");
}
strHtml.Append("</tr>");
}
strHtml.Append("</table>");
Response.Write(strHtml);
strHtml.Remove(0, strHtml.Length);
}
sqlConn.Close();
}