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()。效果如下圖: