自己动手做博客之日志管理-3.2 编码实现系统首页

原创 2007年10月09日 13:27:00

    结束布局阶段后,得到了系统首页的框架内容,接下来的工作是使用布局中的数据控件Repeater实现图1-3所示的效果。使用Repeater控件分页显示日志数据的代码比较多,第一步在Default.aspx.cs文件中添加如下声明语句:

     //数据库连接

    public SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]);

    public static int TotalPage;//定义变量来保存总页数

    public int CurPage;//定义变量来保存当前页索引

    public int Tnum;//总条数

    public int EachPage;//每页总条数

    在页面的载入过程Page_Load中添加语句:

    protected void Page_Load(object sender, EventArgs e)

    {

      BindLog();

    }

    如上所示,在页面加载过程中调用了BindLog()方法,这是个自定义方法,这样做的好处是显而易见的,在后面这种优势会更明显。BindLog()方法包含了以下代码,这些代码比较长,其中包含了为读者添加的大量注释:

    void BindLog()

    {

        //定义查询语句,优先显示置顶日志

        String sql = "SELECT * FROM info  where hometop=0 order by id desc";

        //创建数据库适配器并执行查询语句

        SqlDataAdapter da = new SqlDataAdapter(sql, conn);

        //创建保存结果集的变量ds

        DataSet ds = new DataSet();

        //将结果填充表"Table"

        da.Fill(ds, "Table");

        //创建一个分页对象

        PagedDataSource pds = new PagedDataSource();

        //设置分页的数据源为"Table"

        pds.DataSource = ds.Tables["Table"].DefaultView;

        //开启自动分页功能

        pds.AllowPaging = true;

        //设置每页显示数量

        pds.PageSize = 5;

        if (Request.QueryString["Page"] != null)

        {

            CurPage = Convert.ToInt32(Request.QueryString["Page"]);

            CurPage = Math.Min(CurPage, pds.PageCount);

            CurPage = Math.Max(CurPage, 1);

        }

        else

        {

            CurPage = 1;

        }

        //设置翻页链接

        pds.CurrentPageIndex = CurPage - 1;

        TotalPage = pds.PageCount;

        Tnum = pds.DataSourceCount;

        EachPage = pds.Count;

        lblCurPage.Text = " " + CurPage.ToString() + " / " + TotalPage.ToString() + " ";

        lblTnum.Text = ": " + Tnum.ToString() + " 条记录  ";

        lblEachPage.Text = "每页有: " + EachPage.ToString() + " 条记录";

        if (pds.CurrentPageIndex != 0)

            lnkFirst.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(1);

        if (pds.CurrentPageIndex != TotalPage - 1)

            lnkLast.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(TotalPage);

        if (!pds.IsFirstPage)

            lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1);

        if (!pds.IsLastPage)

            lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage + 1);

        //绑定数据源到Repeater控件

        repLog.DataSource = pds;

        repLog.DataBind();

        //关闭连接

        ds = null;

        da = null;

        conn.Close();

    }

    为了实现在Repeater控件中的分页功能,在上述代码中首先创建了一个分页对象实例,然后使用该实例的DataSource方法设置数据源,并将该实例的AllowPaging方法的值设置为True开启分页功能,接下来的语句设置每页显示5条记录。

    再往下的if语句为当获取的参数Page的值不为空时,将获取的值赋值给CurPage,否则将变量CurPage的值设置为1。第二个IF语句判断当前页不是首页时,就设置单击“上一页”时链接的URL。最后将分页实例对象绑定到Repeater控件,并将绑定数据显示在页面中。

    在1.2.1节介绍的Repeater控件布局代码中最后包含一个GO按钮,单击它可跳转到指定页面。GO按钮的名称为btnPage,单击事件触发了btnPage_Click方法,在这里编写响应代码,如下所示为这些代码:

    protected void btnPage_Click(object sender, EventArgs e)

    {

        int PageNum = 0, pageid = Convert.ToInt32(txtPage.Text);

        if (!txtPage.Text.Equals(""))

            PageNum = pageid;

        if (PageNum <= 0 || PageNum > TotalPage)

            Response.Redirect(Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(1));

        else

            Response.Redirect(Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(PageNum));

    }

    同样是在该控件的布局代码中“<%#Ding(DataBinder.Eval(Container.DataItem,"homeTop"))%>”的作用是判断当前日志是否为置顶属性,如果是则显示“【置顶】”字符串,否则显示一个空字符。Ding()方法的参数为绑定的homeTop字段,方法完整代码如下:

    public string Ding(object obj) {

        string str = obj.ToString();

        if (str.Equals("1"))

        {

            return "【置顶】";

        }

        else

        {

            return " ";

        }

   }

    我们知道homeTop字段的类型是数字型,值为1时表示是置顶日志。根据这个特性,在Ding()方法首先将传递过来的对象转换为字符串类型,再进行比较是返回“【置顶】”字符串,还是空字符串。 

系统操作日志的实现原理

定义操作日志实体public class SystemOperationLog extends BaseEntity { /** * */ private stat...
  • u014344668
  • u014344668
  • 2017年06月16日 15:17
  • 444

日志系统框架的设计与实现

在Java领域,存在大量的日志组件,open-open收录了21个日志组件。日志系统作为一种应用程序服务,对于跟踪调试、程序状态记录、崩溃数据恢复都有着重要的作用,我们可以把Java日志系统看作是必不...
  • woddle
  • woddle
  • 2014年08月02日 12:36
  • 4116

基于struts2的日志管理系统

既然是基于struts2框架做的,就必须了解struts框架。struts详解:http://baike.baidu.com/link?url=thjh0ktwQ5cQhzKnUVmSdIqXicPU...
  • HsuanlinMagic
  • HsuanlinMagic
  • 2016年09月19日 20:46
  • 1777

系统日志管理

1、日志的查看 日志可以记录下系统所产生的所有行为,并按照某种规范表达出来。我们可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些信息调整系统的行为。 收集你想要的数据,分析...
  • u012582664
  • u012582664
  • 2017年02月22日 10:19
  • 914

日志管理方法及系统

摘要 本发明涉及应用系统日志管理技术领域,提供了一种日志管理方法和系统,所述方法包括如下步骤:S1:初始化系统业务功能列表和业务功能方法列表;S2:将业务操作中的具体操作信息与系统日志表和历史数...
  • baidu_24932821
  • baidu_24932821
  • 2016年01月16日 11:44
  • 9927

Spring AOP实现后台管理系统日志管理

AOP+注解 实现后台管理系统日志管理
  • Myron_007
  • Myron_007
  • 2017年02月08日 15:31
  • 5532

集中化Linux日志管理系统

笔者 工作中 负责 着 60 多 台Linux服务器的运维管理工作, 初期 每台机器日志的巡查,是一件相当耗时耗力的工作。后来经过 摸索 ,整理出一个非常适合各种规模的服务器的日志集中化管理,巡查流程...
  • a727756480
  • a727756480
  • 2014年03月25日 14:30
  • 6867

某大型银行深化系统之十九:日志规范

传送门 ☞ Android兵器谱 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229         在应用程序中添加程序日志记录可以跟踪代码运行时轨迹,作为日...
  • leverage_1229
  • leverage_1229
  • 2013年05月28日 13:00
  • 3262

博客管理系统开发总结1(附代码)

(这是我和我室友开发的第一个程序。起初为了完成老师的作业。技术和设计都不是很好。)     开发目的: 这个系统起初设定是为了给老师使用,由于我们所有作业都发在博客院里,所以老师查看不是很方便。我们的...
  • zuhaoran
  • zuhaoran
  • 2016年09月18日 21:16
  • 242

ssm实现管理系统

这个项目主要有五个模块,这五个模块分别是数据管理、数据统计、用户管理、角色管理、网站信息管理。我们团队实现了其中的4个模块,分别是数据管理、数据统计、用户管理、网站信息管理。其中主要实现了对数据的增删...
  • qq_39136928
  • qq_39136928
  • 2018年01月05日 17:28
  • 56
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自己动手做博客之日志管理-3.2 编码实现系统首页
举报原因:
原因补充:

(最多只允许输入30个字)