自己动手做博客之日志管理-5.2 管理日志分类

23 篇文章 0 订阅

    在图1-14中看到第一个要管理是日志分类,也就是本节所要介绍的。它是使用ucAdmin_LogCategory.ascx用户控件来完成的,如图1-1所示是该控件的最终布局。

1-1  管理日志分类用户控件布局

    如图1-1所示,在绑定显示日志分类数据时这里使用的ASP.NET中的GridView控件,而不是Repeater控件。GridView控件又称网格视图控件,该控件可以呈现多列、完全模板化的表格,在其功能上比Repeater控件更加强大。通过使用GridView控件,用户可以显示、编辑和删除多种不同的数据源(例如数据库、XML文件和公开数据的业务对象)中的数据。

    使用GridView来可以完成以下操作:

l         通过数据源控件自动绑定和显示数据

l         通过数据源控件对数据进行选择、排序、分页、编辑和删除

l         指定自定义列和样式

l         利用模板创建自定义用户界面(UI)元素

l         通过处理事件将自己的代码添加到GridView控件的功能中

      GridView控件支持BoundFieldButtonFieldHyperLinkFieldCommandField、和TemplateField等多种绑定列类型,最常用的是BoundFieldCommandField

       BoundField类型显示绑定到数据源的一个字段的列,显示的结果为纯文本形式:在绑定该列类型的数据时,需要用到与该数据有关的属性。该列类型的常用重要属性如下:

l         DataField  数据源中绑定数据列的字段名称

l         DataFormatString  显示列数据的格式

l         HeaderText  该列的标题

l         FooterText  该列的脚注部分

l         ReadOnly  标识该列是否要编辑

l         SortExpression  该列的排序表达式

   CommandField类型显示GridView中内置各种编辑功能按钮。如编辑删除等,默认情况下它们以LinkButton的形式表现出来。该列类型常用重要属性如下所示:

l         ButtonType  设置按钮的类型

l         CancleText  取消按钮的显示文本

l         DeleteText  删除按钮的显示文本

l         EditText  编辑按钮的显示文本

l         ShowEditButton  是否显示编辑按钮

l         ShowCancleButton  是否显示取消按钮

l         ShowDeleteButton  是否显示删除按钮

    图1-1所示布局中的添加日志分类使用了一个文本框控件、一个按钮和一个验证控件。

1.查看日志分类

    查看日志分类也就是从infosort表中读取数据并绑定到GridView控件显示,这首先需要了解GridView控件的布局,其代码如下:

<asp:GridView ID="GridView1" runat="server" BackColor="White" BorderColor="#999999"

            BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical"

            OnRowCancelingEdit="GridView1_RowCancelingEdit"

            OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"

            OnRowUpdating="GridView1_RowUpdating" ShowFooter="True"

            Width="500px" AutoGenerateColumns="False" EnableViewState="False" >

            <FooterStyle BackColor="#CCCCCC" ForeColor="Black" />

            <RowStyle BackColor="#EEEEEE" ForeColor="Black" />

            <SelectedRowStyle BackColor="# 008A 8C " Font-Bold="True" ForeColor="White" />

            <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />

            <HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />

            <AlternatingRowStyle BackColor="Gainsboro" />

            <Columns>

                <asp:BoundField DataField="id" HeaderText="编号" ReadOnly="True" />

                <asp:BoundField DataField="sortName" HeaderText="分类名称" />

                <asp:BoundField DataField="sortdate" HeaderText="更新日期" ReadOnly="True" />

                <asp:CommandField ShowEditButton="True" />

                <asp:CommandField ButtonType="Image" DeleteImageUrl="~/images/a_delete.gif" ShowDeleteButton="True" />

            </Columns>

</asp:GridView>

     上述代码中<Columns></Columns>标记这间的为布局外观上显示的列,其中的第一行指定一个显示“编号”的列,列使用的数据为绑定的id列,最后一个ReadOnly属性设置该列为只读。

    认识了布局后下面来编写代码,GridView控件的绑定方法与Repeater控件相同,代码如下:

protected void Page_Load(object sender, EventArgs e)

    {

        gbind();

    }

    void gbind()

    {

        dbconfig dbconn = new dbconfig();

        GridView1.DataSource = dbconn.CreateSource("select * from infosort");

        GridView1.DataBind();

        dbconn.Clear();

}

    这里要注意,在代码中第一次使用了数据库通用类中的CreateSource()方法。

2.修改日志类别

    执行上述代码,然后在某行中单击“编辑”链接,则该行中可编辑的单元格都会以文本框的形式呈现。此时,在文本框中对数据进行修改,再单击“更新”链接保存修改,若单击“取消”链接则退出编辑状态,如图1-16所示。

1-16  修改日志分类

    GridView控件的“编辑”、“更新”和“取消”链接取决于控件的OnRowCancelingEditOnRowEditingOnRowUpdating属性,我们在上面的布局代码中会发现它们。它们的属性值分别对应后台的一个方法,而且都是使用GridView的事件模型机制。

    “编辑”链接对应的GridView1_RowEditing()方法代码如下:

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

    {

        GridView1.EditIndex = e.NewEditIndex;

        gbind(); //重新绑定控件的数据源

    }

    代码中的EditIndex属性可以设置或获取要编辑行的索引,这里指定编辑的行为单击的所在行,使其处于编辑状态,这个属性很重要,在后面将会多次用到。

    “取消”链接对应的GridView1_RowCancelingEdit()方法代码如下:

  protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

  {

      GridView1.EditIndex = -1;

      gbind();  //重新绑定控件的数据源

  }

    最重要的是“更新”链接对应的GridView1_RowUpdating()方法的代码,如下所示:

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)

    {

        GridView1.EditIndex = e.RowIndex;

        //获取要更新的行

        GridViewRow gvr = this.GridView1.Rows[e.RowIndex];

        //获取行中新的分类名称

        TextBox txt = (TextBox)gvr.Cells[1].Controls[0];

        //获取更新的分类编号

        string updateid = gvr.Cells[0].Text;

        string strsql = "Update infosort set sortName='" + txt.Text.Trim() + "',sortDate='" + DateTime.Now.ToString() + "' where id=" + updateid;

        dbconfig dbconn = new dbconfig();

        dbconn.ExecuteNonQuery(strsql);

        dbconn.Clear();

        Response.Redirect("Admin_Index.aspx");

    }

    在更新infosort表中sortName字段的同时更新了sortDate为当前日期,最后再转向到系统管理首页。

3.删除日志类别

    “删除链接对应于GridView控件的OnRowDeleting属性,即GridView1_RowDeleting()方法,执行过程为获取所在行的分类编号,再执行语句并返回,如下所示:

    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)

    {

        GridViewRow gvr = (GridViewRow)GridView1.Controls[0].Controls[e.RowIndex + 1];

        string delid = gvr.Cells[0].Text;

        dbconfig dbconn = new dbconfig();

        dbconn.ExecuteNonQuery("delete from infosort where id=" + delid);

        dbconn.Clear();

        Response.Redirect("Admin_Index.aspx");

   }

4.添加日志分类

    添加日志分类在图1-1布局中的最下方,只需要在文本框中输入一个名称再单击“确定”按钮来完成。代码的编写需要在“确定”按钮的单击事件中,按钮的名称为btnOK,其单击代码如下所示:

protected void btnOk_Click(object sender, EventArgs e)

    {

        dbconfig dbconn = new dbconfig();

        string strsql="insert into infosort(sortName) values('"+txtLog.Text.Trim()+"')";

        dbconn.ExecuteNonQuery(strsql);

        dbconn.Clear();

        Response.Redirect("Admin_Index.aspx");

    }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值