自己动手做博客之日志管理-5.3 管理日志列表

   日志列表的管理也包括添加、修改和删除,在这里制作的用户控件名称为ucAdmin_Log.ascx,其页面的布局如图1-17所示。

1-17  布局日志列表

    这里同样使用了GridView控件,这也是该控件最擅长的。单击下方的“添加新日志”链接将会打开LogAdd.aspx页,如果单击的是“编辑”链接将会转到LogModify.aspx页,当单击“删除”链接时会直接删除该行。

1.显示日志列表

    GridView控件的IDgvLog,这里绑定数据并显示是由gbind1()方法完成的,如下所示:

    void gbind1()

    {

        dbconfig dbconn = new dbconfig();

        gvLog.DataSource = dbconn.CreateSource("select * from info");

        gvLog.DataBind();

        dbconn.Clear();

    }

    对于“删除”链接的实现可以参考日志分类中的代码,这里不再介绍。下面列出了单击“编辑”链接时调用的gvLog_RowEditing()方法的代码:

    protected void gvLog_RowEditing(object sender, GridViewEditEventArgs e)

    {

        GridViewRow gvr = (GridViewRow)gvLog.Controls[0].Controls[e.NewEditIndex+1];

        int id = int.Parse(gvr.Cells[0].Text);

        Response.Redirect("LogModify.aspx?id="+id);

    }

    从上述代码中可以看到,首先获取要编辑的行,再获取行中日志编号的值,然后将这个值传递给LogModify.aspx页面的id参数,这个页面我们会稍后介绍。

2.添加日志

    添加日志时可以指定新日志的标题、所属的栏目、日志的摘要、日志的作者、是否置顶显示、日志链接、日志的引用地址以及日志的正文内容,其中默认打开时只显示前3项,单击“高级选项”按钮则可以打开完整模式,如图1-18所示为页面的布局。

1-18  布局添加日志页面

    在图1-18所示的布局中日志的摘要和内容都是使用的第三方控件FreeTextBox控件,这个控件是一个免费的.NET HTML编辑器,读者可以到http://freetextbox.com/download/网址下载最新版本,在页面中使用FreeTextBox控件之前,应该先在项目中添加对该控件DLL文件的引用。具体的操作如下:

    (1)通过下载得到FreeTextBox控件的压缩包并解压。

    (2)打开项目,在【解决方案资源管理器】窗格中右击项目名称选择【添加引用】命令,打开【添加引用】对话框。

    (3)在对话框中通过【浏览】选项卡选择解压包中的FreeTextBox.dll文件,再单击【确定】按钮,如图1-19所示。

1-19  添加引用

    (4)复制解压包中的ftb.imagegallery.aspx到要使用FreeTextBox的目录(当然可以是其他,但是可能要设置路径)。

    (5)像使用普通控件一样,将它添加布局并修改控件的其他属性。这时打开源代码视图,会在页面的顶部找到如下代码:

<%@ Register TagPrefix="FTB" Namespace="FreeTextBoxControls" Assembly="FreeTextBox" %>

    这行为FreeTextBox控件的注册代码,指定使用的程序集、命名空间和引用标签。添加控件后会生成类似如下的代码:

  <FTB:FreeTextBox ID="Free1"   ImageGalleryPath="~/ImageAdmin"

        runat="server" Text='' Language="zh-CN"

        ButtonDownImage="True" Height="200"

        ToolbarLayout="ParagraphMenu,FontFacesMenu,FontSizesMenu,FontForeColorsMenu|Bold,Italic,Underline,Strikethrough;Superscript,Subscript,RemoveFormat|JustifyLeft,JustifyRight,JustifyCenter,JustifyFull;BulletedList,NumberedList,Indent,Outdent;CreateLink,Unlink,InsertImage,InsertImageFromGallery,InsertRule|Cut,Copy,Paste;Undo,Redo,Print">

  </FTB:FreeTextBox>

    属性Language="zh-CN"指定控件显示的提示为简体中文,它还自带了多种语言,可参见帮助文件修改。

    添加日志是博客系统的核心功能,而且是管理员的特权。打开LogAdd.aspx页面的后台代码,在Page_Load中添加如下所示代码:

dbconfig dbconn = new dbconfig();

protected void Page_Load(object sender, EventArgs e)

{

    if (Session["admin"] == null)

    {

        Response.Redirect("Log_Admin.aspx");

    }

    if (!IsPostBack)

    {

    DropDownList1.DataSource = dbconn.CreateSource("select id,sortName from infosort");

    DropDownList1.DataBind();

    }

}

    第二个if中的语句将日志分类信息绑定到下拉列表框,供管理员选择新日志的类别,DropDownList1是下拉列表框的ID,它的布局代码如下所示:

<asp:DropDownList ID="DropDownList1" runat="server" Width="200px" DataTextField="sortName" DataValueField="id">

        <asp:ListItem Value="0" Selected="True"></asp:ListItem>

</asp:DropDownList>

    DataTextField属性指定在列表框中显示的文本为sortName(日志类别名称)字段的数据,DataValueField属性指定在选择后得到的值为id(日志类别编号)字段的数据。

    最后介绍单击“发布”按钮后添加日志的代码,这些代码可分为三个过程,首先获取用户输入的新日志数据,再针对这些数据进行处理,然后添加到数据库并返回。完整的实现代码如下所示,在代码中包含一些重要注释:

 string strSQL,Title,Abstrack,Content,Author,Link,IP,URL;

 int SortId,HomeTop;

 protected void btnAdd_Click(object sender, EventArgs e)

 {

       Abstrack = digest.Text;  //获取摘要内容

       Title=title.Text;  //获取标题

       Content = Free1.Text;  //获取正文内容

       Author = author.Text;

       Link = link.Text;

       IP = Request.UserHostAddress;   //获取IP地址

       URL = url.Text;

       SortId =System.Int16.Parse(DropDownList1.SelectedValue);   //获取类别编号

       HomeTop=hometop.Checked ? 1 : 0;   //是否置顶

       strSQL = "insert into info(title,author,abstract,content,sortId,link,[date],ip,homeTop,url) values(";

       strSQL+="'"+ Title + "','"+Author+"','"+Abstrack+"','"+Content+"',"+SortId +",'"+ Link+"',";

       strSQL+="'"+DateTime.Now.ToString()+"','"+IP+"'," +HomeTop+",'"+URL+"')";

       dbconn.ExecuteNonQuery(strSQL);

       dbconn.Clear();

       Response.Write("<script>alert('添加成功');window.location.href='Default.aspx';</script>");

 }

3.修改日志

    当单击“编辑”按钮就会跳转到修改页面,这个页面中除了需要一个id参数指修改日志的编号外,还需要对权限进行验证,以及绑定显示日志的类别,这些可参考LogAdd.aspx页的Page_Load()方法。如图1-50所示为修改日志时的效果。

1-20  修改日志

    如图1-20所示,修改页面LogModify.aspx要完成两大功能,第一个是在页面载入时读取日志的内容并显示,另一个则是再单击“保存修改”按钮后更新日志的数据。第二个功能与添加日志相似这里不再介绍,下面介绍读取日志的实现,主要是使用了自定义的方法getContent(),代码如下:

    void getContent() {

        string strsql = "select * from info where id=" + Request["id"];

        dbconfig dbconn = new dbconfig();

        SqlCommand cmd=new SqlCommand(strsql,dbconn.conn);

        SqlDataReader dr=cmd.ExecuteReader();

        if(dr.Read())

        {

            title.Text = dr["title"].ToString();     //标题

            author.Text = dr["author"].ToString();

            digest.Text = dr["abstract"].ToString();  //摘要

            Free1.Text = dr["content"].ToString();    //正文

            string sortid = dr["sortID"].ToString();

            DropDownList1.SelectedValue = sortid;    //日志分类

            link.Text = dr["link"].ToString();

            hometop.Checked = dr["homeTop"].ToString() == "1" ? true : false;

            url.Text = dr["url"].ToString();

        }

        dr.Close();

        dbconn.Clear();

    }

    getContent()方法在页面的Page_Load()方法中调用,然后使用SqlDataReader对象的Read()方法来逐项读取数据并显示,最后关闭连接。

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