供求信息网(25)

1.10 免费供求信息删除管理页(后台)

1.10.1 免费供求信息删除管理页概述

免费供求信息的删除主要是指删除没有通过审核的信息,网站后台管理员删除供求信息时,会弹出一个确认消息框,防止用户误删除信息。程序运行结果如图1.42所示。

1.10.2  免费供求信息删除管理页技术分析

正常情况下,在GridView控件中完成删除功能是没有信息提示框的,需要程序开发人员来完成。主要通过HtmlControl.Attributes属性的Add()方法。

Add()方法:将属性(Attribute)添加到服务器控件的AttributeCollection对象。

语法如下:

public void Add (

string key,

string value

)

参数说明:

key:分配给集合中的新属性(Attribute)的索引。 

Value:要存储在集合中的属性(Attribute)。

在本模块中实现的主要代码如下:

//删除指定行数据时,弹出询问对话框

((LinkButton)(e.Row.Cells[7].Controls[0])).Attributes.Add("onclick", "return confirm('是否删除当前行数据!')");

1.10.3  免费供求信息删除管理页实现过程

本模块使用的数据表:tb_info。

1.设计步骤

(1)在BackGround文件夹中新建一个Web窗体,默认名称DeleteInfo.aspx,主要用于免费供求信息的删除管理。

(2)在Web窗体中添加一个Table表格,用于页面的布局。

(3)在Table中添加一个Label控件,主要用于GridView控件分页后的总页数。主要属性设置:AllowPaging属性为True,即允许分页;PageSize属性为24,即每页显示24条数据;AutoGenerateColumns属性为False,即不显示自动生成的列。

2.实现代码

声明业务层类对象和静态字符串变量,用途参见代码的注释部分。在页面的加载事件中,获取供求信息的类型,并调用自定义GridViewBind()方法查询相关类型的供求信息显示在GridView控件中。值得注意的是,供求信息网所有免费供求信息的删除管理都是在DeleteInfo.aspx页面实现的。页面的加载事件中实现代码如下:

例程37  代码位置:光盘\TM\01\SIS\ BackGround\ DeleteInfo.Aspx.cs

Operation operation = new Operation();  //业务类对象

static string infoType = "";       //供求信息类型

protected void Page_Load(object sender, EventArgs e)

{

    if (!IsPostBack)

    {

        infoType = Request.QueryString["id"].ToString();

        GridViewBind(infoType);

    }

}

自定义GridViewBind()方法,用于查询相关类型的供求信息,并且将查询结果显示在GridView表格控件中。实现代码如下:

例程38  代码位置:光盘\TM\01\SIS\ BackGround\ DeleteInfo.Aspx.cs

/// <summary>

/// 绑定供求信息到GridViev控件

/// </summary>

/// <param name="type">供求信息类别</param>

private void GridViewBind(string type)

{

    GridView1.DataSource = operation.SelectInfo(type);

    GridView1.DataKeyNames = new string[] { "id" };

    GridView1.DataBind();

    //显示当前页数

    lblPageSum.Text = "当前页为 " + (GridView1.PageIndex + 1) + " / " + GridView1.PageCount + " 页";

}

GridView控件的RowDataBound事件是在将数据行绑定到数据时发生,则在该事件下每绑定一行,就设置每行的相关功能,如高亮显示行、设置审核状态、多余的文字使用…替换、删除供求信息前弹出提示框。实现代码如下:

例程39  代码位置:光盘\TM\01\SIS\ BackGround\ DeleteInfo.aspx.cs

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

{

    if (e.Row.RowType == DataControlRowType.DataRow)

    {

        //高亮显示指定行

        e.Row.Attributes.Add("onMouseOver", "Color=this.style.backgroundColor;this.style.backgroundColor='#FFF000'");

        e.Row.Attributes.Add("onMouseOut", "this.style.backgroundColor=Color;");

        //设置审核状态,并且设置相应的颜色

        if (e.Row.Cells[5].Text == "False")

        {

            e.Row.Cells[5].Text = StringFormat.HighLight("未审核", true);

        }

        else

        {

            e.Row.Cells[5].Text = StringFormat.HighLight("已审核", false);

        }

        //多余字使用...显示

        e.Row.Cells[2].Text = StringFormat.Out(e.Row.Cells[2].Text, 18);

        //删除指定行数据时,弹出询问对话框

        ((LinkButton)(e.Row.Cells[7].Controls[0])).Attributes.Add("onclick", "return confirm('是否删除当前行数据!')");

    }

}

SelectedIndexChanging事件发生在单击某一行的“详细信息”按钮以后发生,本程序通过该事件查看供求信息的详细信息。实现代码如下:

例程40  代码位置:光盘\TM\01\SIS\ BackGround\ DeleteInfo.aspx.cs

protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)

{

    string id = GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();

    Response.Write("<script> window.open('DetailInfo.aspx?id=" + id + "&&type=" + infoType + 

"','','height=258,width=679,top=200,left=200') </script>");

    Response.Write("<script>history.go(-1)</script>");

}

PageIndexChanging事件是在单击某一页导航按钮时,但在GridView控件处理分页操作之前发生。通过该事件主要实现页面的分页功能。实现代码如下:

例程41  代码位置:光盘\TM\01\SIS\ BackGround\ DeleteInfo.aspx.cs

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)

{

    GridView1.PageIndex = e.NewPageIndex;

    GridViewBind(infoType);

}

RowDeleting事件在单击某一行的“删除”按钮时,但在GridView控件删除该行之前发生。通过该事件主要完成供求信息的删除功能。实现代码如下:

例程42  代码位置:光盘\TM\01\SIS\ BackGround\ DeleteInfo.aspx.cs

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)

{

    operation.DeleteInfo(GridView1.DataKeys[e.RowIndex].Value.ToString());

    GridViewBind(infoType);

}

 

读书导航