asp自带有很多的控件自带分页功能,但是用过之后就会发现,当写较为复杂的SQL语句时明显就跟不上了,还有就是那个界面真心丑,有时候不得不自己动手重新写一套css样式表出来,明显感觉舒爽多了,既然自己写了表格 的css那分页功能就也得自己动手了,这是我前几日自己写东西时的语句,当然这只是一个比较初级的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OleDb;
using System.Text;
public partial class showldxx : System.Web.UI.Page
{
private int totalCount = 0;//总记录数目
private int PageSize = 4; //每页显示数据条目
private int pagecount = 0;//总页数
private int nowpage = 1;//当前页数
protected void Page_Load(object sender, EventArgs e)
{
ShowDjyd(dbstring());
showFoot();
}
protected string dbstring()
{
zgfjm.Class1 gfjm = new zgfjm.Class1();
string[] cfg = new string[12];
operateDefaultFile mop = new operateDefaultFile();
cfg = mop.getCourseConfig(Server.MapPath("./") + "App_Data\\config.xml");
string lxdh = cfg[2];
ViewState["kcm"] = cfg[0];
ViewState["tcnm"] = cfg[1];
string mulu = Server.MapPath("App_Data/") + gfjm.Encrypt("dbfile", lxdh.Substring(3, 8)) + "\\" + gfjm.Encrypt("netcourse", lxdh.Substring(3, 8)) + "\\";
string db = mulu + "sss.mdb";
return db;
}
private void ShowDjyd(String db)
{//显示右侧所有的新闻
HttpCookie mycookie = Request.Cookies["guest"];
string sql = "";
courseAccessDatabaseOperator.MDBOperator.operateMDB accessdbcn = new courseAccessDatabaseOperator.MDBOperator.operateMDB(db);
OleDbDataReader myrd;
if (Request.QueryString["nowpage"] == null||Convert.ToInt32(Request.QueryString["nowpage"])==1)
{
nowpage = 1;
sql = "select top " + PageSize + " messageTitle,MessageContent,updatetime,deadlineDate,replyTag from messageBox order by updatetime desc";
}
else
{
nowpage = Convert.ToInt32(Request.QueryString["nowpage"]);
sql = "select top " + PageSize + " messageTitle,MessageContent,updatetime,deadlineDate,replyTag from messageBox "
+ " where ID not in(select top " + (PageSize) *( nowpage-1) + " id from messageBox order by updatetime,id desc ) order by updatetime desc";
}
myrd = accessdbcn.getDataReader(sql);
Table tb = new Table();
tb.CssClass = "ldtb";
tb.CellSpacing = 0;
tb.CellPadding = 0;
TableRow tr = new TableRow();
TableCell td = new TableCell();
TableHeaderRow thr = new TableHeaderRow();
TableHeaderCell thc = new TableHeaderCell();
thc.Text = "信件标题";
thc.Width = Unit.Pixel(140);
thc.CssClass = "ldtd";
thr.Controls.Add(thc);
TableHeaderCell thc1 = new TableHeaderCell();
thc1.Text = "信件内容";
thc1.Width = Unit.Pixel(240);
thc1.CssClass = "ldtd";
thr.Controls.Add(thc1);
TableHeaderCell thc2 = new TableHeaderCell();
thc2.Text = "发信时间";
thc2.Width = Unit.Pixel(140);
thc2.CssClass = "ldtd";
thr.Controls.Add(thc2);
TableHeaderCell thc3 = new TableHeaderCell();
thc3.Text = "截止时间";
thc3.Width = Unit.Pixel(140);
thc3.CssClass = "ldtd";
thr.Controls.Add(thc3);
TableHeaderCell thc4 = new TableHeaderCell();
thc4.Text = "状态";
thc.Width = Unit.Pixel(140);
thc4.CssClass = "ldtd";
thr.Controls.Add(thc4);
tb.Controls.Add(thr);
while (myrd.Read())
{
tr = new TableRow();
tr.CssClass = "ldtr";
td = new TableCell();
td.Text = myrd.GetString(0);
td.Width = Unit.Pixel(140);
td.CssClass = "ldtd";
tr.Cells.Add(td);
td = new TableCell();
td.Text = "<asp:TextBox runat='server' TextMode='MultiLine'>" + myrd.GetString(1) + "</asp:TextBox>";
td.CssClass = "ldtd";
td.Width = Unit.Pixel(340);
tr.Cells.Add(td);
td = new TableCell();
td.Text = myrd.GetDateTime(2).ToString().Substring(0, 10);
td.Width = Unit.Pixel(120);
td.CssClass = "ldtd";
tr.Cells.Add(td);
td = new TableCell();
td.Text = myrd.GetDateTime(3).ToString().Substring(0, 10);
td.Width = Unit.Pixel(120);
td.CssClass = "ldtd";
tr.Cells.Add(td);
String t = "";
if (myrd.GetBoolean(4))
{
t = "已处理";
}
else
{
t = "处理中";
}
td = new TableCell();
td.Text = t;
td.Width = Unit.Pixel(80);
td.CssClass = "ldtd";
tr.Cells.Add(td);
tb.Rows.Add(tr);
}
xjlb.Controls.Add(tb);
myrd.Close();
if (accessdbcn.state() == true) accessdbcn.close();
}
private int getNum()
{//获得记录总数
HttpCookie mycookie = Request.Cookies["guest"];
string sql = "";
courseAccessDatabaseOperator.MDBOperator.operateMDB accessdbcn = new courseAccessDatabaseOperator.MDBOperator.operateMDB(dbstring());
OleDbDataReader myrd;
sql = "select count(*) as num from messageBox ";
myrd = accessdbcn.getDataReader(sql);
while (myrd.Read())
{
Session["count"] = myrd.GetValue(0);//直接存在session中
//
totalCount = Convert.ToInt32(myrd.GetValue(0));
}
accessdbcn.close();
return totalCount;
}
//显示页脚的相关数据
private void showFoot()
{
totalCount = getNum();
pagecount = totalCount / PageSize;
pagecount += totalCount % PageSize > 0 ? 1 : 0;
if (Request.QueryString["nowpage"] == null)
{
nowpage = 1;
}
else
{
nowpage = Convert.ToInt32(Request.QueryString["nowpage"]);
}
Table tb = new Table();
TableRow tr = new TableRow();
TableCell td = new TableCell();
tb.Width = Unit.Percentage(100);
td.CssClass = "newstd";
StringBuilder sb = new StringBuilder();
sb.Append("共" + pagecount + "页 共有" + totalCount + "条记录");
sb.Append(" 第" + nowpage + "页");
if ((nowpage - 1) > 0 && (nowpage + 1) <= pagecount)
{
sb.Append(" <a class='lwf' href='showldxx.aspx?nowpage=1'> 首页</a>" +
" <a class='lwf' href='showldxx.aspx?nowpage=" + ((nowpage - 1) > 0 ? (nowpage - 1) : 1) + "'> 上一页</a>" +
" <a class='lwf' href='showldxx.aspx?nowpage=" + ((nowpage + 1) > pagecount ? pagecount : (nowpage + 1)) + "'> 下一页</a>"
+ " <a class='lwf' href='showldxx.aspx?nowpage=" + pagecount + "'>尾页");
}
else if ((nowpage - 1) <= 0 && (nowpage + 1) <= pagecount)
{
sb.Append(" <a class='lwf' href='showldxx.aspx?nowpage=1'> 首页</a>" +
" <a class='lwf' href='showldxx.aspx?nowpage=" + ((nowpage + 1) > pagecount ? pagecount : (nowpage + 1)) + "'> 下一页</a>"
+ " <a class='lwf' href='showldxx.aspx?nowpage=" + pagecount + "'>尾页");
}
else if ((nowpage - 1) > 0 && (nowpage + 1) > pagecount)
{
sb.Append(" <a class='lwf' href='showldxx.aspx?nowpage=1'> 首页</a>" +
" <a class='lwf' href='showldxx.aspx?nowpage=" + ((nowpage - 1) > 0 ? (nowpage - 1) : 0) + "'> 上一页</a>" +
" <a class='lwf' href='showldxx.aspx?nowpage=" + pagecount + "'>尾页");
}
else
{
}
td.Text = sb.ToString();
tr.Controls.Add(td);
tb.Controls.Add(tr);
footer.Controls.Add(tb);
}
}
这是实际中的一个案例,需求是查询出所有的 信件按时间排序,实现分页,由于实际的项目需求有些代码是不一定必要的核心在于
showFoot()。效果如下图: