asp分頁技術的實現

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章