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

23 篇文章 0 订阅

    所谓其他模块指的是在系统首页中除了主体日志之外的模块,从图1-3所示的效果中可以看到这些模块包括:日志分类、最新日志和最近评论。这些模块与母版页一样,在每个页面中都会有显示,设计时将这些模块分别封装为成同的用户控件,再嵌入到母版页中,具体的实现如下所示。

1.日志分类

    用户控件最简单的一个定义是ASP.NET布局代码中可重用的部分,它以.ascx为扩展名进行保存。创建用户控件非常简单,它们来本是ASP.NET页页的一部分,被封装在一个单独的文件中,可在一个应用程序中根据需要多次重用。编写用户控件和编写aspx页面方法一样,我们只需要在aspx页面中编写代码就能够使用它们。用户控件还可以引发自定义事件,由客户端用户来响应事件以调用处理方法。

    下面介绍创建日志类别用户控件的步骤:

    (1)在【解决资源管理器】窗格中右击选择【添加新项】命令或者选择【网站】|【添加新项】命令,打开【添加新项】对话框。

    (2)在对话框的【模板】选项区中单击【Web用户控件】选项,在【名称】文本框中Web用户控件的默认名为WebUserControl1.ascx,这里修改文件名为ucLogCategory.ascx。从【语言】列表框选择Visual C#项。

    (3)单击【添加】按钮,VS.NET将在网站所在的根目录中创建ucLogCategory.ascx文件。创建完成后会自动打开用户控件的HTML【源】视图,并显示一行代码,如下所示:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ucLogCategory.ascx.cs" Inherits="ucLogCategory" %>

    (4)这里会发现与ASPX页面非常相似,不同是仅是没有太多的模板代码。而且使用的是@Control指令,该指令表示所生成的类是从System.Web.UI.UserControl继承,并可以将此控件用于窗体中。

    (5)切换至用户控件的【设计】视图,然后添加Repeater控件、图片和其他布局代码,如图1-6所示为最终日志类别的运行和布局效果。

1-6  日志类别用户控件

    打开用户控件的后台文件ucLogCategory.ascx.cs,编写实现图1-6左所示效果的代码。日志分类的数据来自infosort表,实现代码如下:

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            dbconfig dbconn = new dbconfig();

            String sql = "SELECT id,sortname FROM infosort";

            dbconn.da = new SqlDataAdapter(sql, dbconn.conn);

            DataSet ds = new DataSet();

            dbconn.da.Fill(ds, "Table");

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

            repLogCate.DataBind();

            ds = null;

            dbconn.Clear();

        }

    }

    在代码中可以看出显示数据日志分类Repeater控件的IDrepLogCate,在同一个页面中要以避免使用相同的ID,而且在后台代码中,也仅为一个ID指定一个数据源。

2.最新日志

    最新日志模块使用的用户控件名称为ucLogNews.ascx,添加方法这里就不再介绍,其布局与日志分类模块相似,如下所示是这部分的布局代码:

<asp:Repeater ID="repNewLogs" runat="server">

    <HeaderTemplate>

        <div class="border1">

        <div class="lefttitle">最新日志</div>

        <div class="msg">

        <ul class="msgtitlelist"  id="pl">

    </HeaderTemplate>

    <ItemTemplate>

        <li><a href='ShowLog.aspx?id=<%#DataBinder.Eval(Container.DataItem,"id")%>'>

        <%#DataBinder.Eval(Container.DataItem, "title")%></a></li>

    </ItemTemplate>

    <FooterTemplate>

        </ul></div></div>

    </FooterTemplate>

</asp:Repeater>

    这里明确指定了最新日志使用IDrepNewsLgsRepeater控件,其显示的数据来自info表的idtitle两个字段,数据的数量为按发表时间排序的前5条,如下所示是实现代码:

   if (!IsPostBack)

   {

       dbconfig dbconn = new dbconfig();

       String sql = "SELECT top 5 id,title FROM info order by [date] desc";

       dbconn.da = new SqlDataAdapter(sql, dbconn.conn);

       DataSet ds = new DataSet();

       dbconn.da.Fill(ds, "Table");

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

       repNewLogs.DataBind();

       ds = null;

       dbconn.Clear();

   }

3.最近评论

    ucLogComment.ascx是实现显示最近评论的用户控件,它包含了名为repCommentRepeater数据控件,数据来自comment表,具体代码如下所示:

   if (!IsPostBack)

   {

       dbconfig dbconn = new dbconfig();

       String sql = "SELECT top 5 id,content,sortid FROM comment order by [date] desc";

       SqlCommand command = new SqlCommand(sql, dbconn.conn);

       SqlDataReader dr = command.ExecuteReader();

       repComment.DataSource = dr;

       repComment.DataBind();

       dbconn.Clear();

   }

    至此,一个完整的系统首页就制作完成了,它包含了先创建通用的母版页,再添加内容页,然后再添加显示布局,实现时使用了通用的数据库类。通过首页的制作,读者的重点是掌握如何创建母版页、内容页、用户控件。因为在本章的后面,将多次用到它们,到时将不再重复介绍。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值