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);
}