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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本系统是一套数据库管理软件。适用于小型用户。(譬如:建立自己的站点,用本系统来管理数据库。)本人也是一个ASP爱好者,一直都想找一个方便而且便于使用的数据库管理软件。可是,这方面的软件要么很大,用不着。要么就是英文的,看着太累。于是作者便决定自己编制一个软件。 AspMyAdmin之所以被命名为“远程数据库管理系统”有两个原因。 1. 中小型用户制作ASP网站一般采用ACCESS数据库做为后台数据库。然而每次更改数据库中的信息时一般的步骤是先将其下载下来,然后进行更新,最后在将其上传到主页空间中。这样将会出现两个问题。(1)由于宽带网还未普及,下载及上传数据库会浪费掉很多时间和金钱,在只需要对数据库进行很小的修改时尤为明显。(2)不能作到实时更新。更新必须经过较长的时间。由于这两个问题的出现,势必产生这样的需求:用户希望能够找到一种能在线更新数据库的远程数据库管理系统。这也是本系统诞生的原因之一。 2. AspMyAdmin之所以敢称为“数据库管理系统”是因为它可以完成表浏览、视图浏览及视图SQL、存储过程SQL、字段类型的修改、增加表中的字段、到处表的定义和数据,执行SQL命令、创建表、创建视图、压缩数据库等功能。其中视图与存储过程两个模块即使在MICROSOFT ACCESS中也不曾出现。因此本地可以完成的操作,大部分都可以利用本系统在线进行操作。因此AspMyAdmin才敢称为数据库管理系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值