自己动手做博客之日志管理-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()方法首先将传递过来的对象转换为字符串类型,再进行比较是返回“【置顶】”字符串,还是空字符串。 

代码开发过程中对日志的使用总结

在日常开发过程中,日志是代码的必要组成部分,一个好的代码也必然有一个好的日志输出,优秀的日志不仅可以快速帮助我们分析定位问题还可以在对日志的数据挖掘中产生很大的威力。 1、java在发生异常时可以打...
  • hjx_1000
  • hjx_1000
  • 2015-04-20 14:01:46
  • 1937

日志文件记录代码

  • 2017年10月11日 19:42
  • 462KB
  • 下载

java日志管理

在java开发中,日志系统是java项目中必不可少的组成部分。日志可以帮助我们快速的定位问题,记录程序运行过程中的情况,以便项目的监控和优化。我们在日常开发中主要使用的java日志框架组件是:log4...
  • u013473691
  • u013473691
  • 2016-10-08 10:20:44
  • 4364

自己动手做博客之日志管理-1.1 系统分析

    随着互联网的高速发展,越来越多的人和行业接触到了她——博客,并开始了自己了业务。与此同时,博客也成为继免费主页、论坛、QQ和邮箱之后——草民的新秀,博客也成为时下Web 2.0的代名词。   ...
  • somboy
  • somboy
  • 2007-10-08 14:15:00
  • 1944

自己动手做博客之日志管理-2.2 模板页

    VS.NET 2005中提供了ASP.NET 2.0核心框架,ASP.NET 2.0改进了以往版本对网页设计方面支持上的不足,新增和增强了很多的功能,其中母版页控件就是一例。    将母版页称...
  • somboy
  • somboy
  • 2007-10-09 13:12:00
  • 1605

自己动手做大数据系统.pdf

  • 2018年01月29日 14:12
  • 18.58MB
  • 下载

自己动手做博客之日志管理-3.1 添加系统首页布局

    在本章开始的结构分析时提到,系统首页是必不可少的。作为博客系统的首页,首先要显示的就是日志,还有就可以提供日志的类别和搜索帮助用户更好的浏览日志。本节将介绍如何实现系统首页,如图1-3所示为最...
  • somboy
  • somboy
  • 2007-10-09 13:18:00
  • 1497

【大数据】自己动手做大数据系统(第三章 大数据环境搭建和配置-上)

第三章 大数据环境搭建和配置-上
  • qq_32616843
  • qq_32616843
  • 2018-01-07 16:56:57
  • 196

自己动手做博客之日志管理-3.3 编码实现其他模块

    所谓其他模块指的是在系统首页中除了主体日志之外的模块,从图1-3所示的效果中可以看到这些模块包括:日志分类、最新日志和最近评论。这些模块与母版页一样,在每个页面中都会有显示,设计时将这些模块分...
  • somboy
  • somboy
  • 2007-10-09 13:31:00
  • 1478
收藏助手
不良信息举报
您举报文章:自己动手做博客之日志管理-3.2 编码实现系统首页
举报原因:
原因补充:

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