1.9 免費(fèi)供求信息審核頁(yè)(后臺(tái))
1.9.1 免費(fèi)供求信息審核頁(yè)概述
任何用戶都可以免費(fèi)發(fā)布供求信息,如果用戶發(fā)布的供求信息屬于不道德、不健康以及違法的信息,那么將會(huì)造成不可估計(jì)的損失。所以后臺(tái)管理人員可以對(duì)供求信息進(jìn)行審核,審核通過(guò)的供求信息可以顯示在分類相應(yīng)的頁(yè)面中,否則,信息不能發(fā)布。免費(fèi)供求信息審核頁(yè)面如圖1.40所示。
1.9.2 免費(fèi)供求信息審核頁(yè)技術(shù)分析
免費(fèi)供求信息審核頁(yè)中,主要用到了GridView表格中的3個(gè)典型功能,在此對(duì)其進(jìn)行技術(shù)分析。表格中3個(gè)典型功能的應(yīng)用如下:
? 將0和1替換為未審核和已審核狀態(tài)類型。
由于在數(shù)據(jù)庫(kù)中審核和未審核的供求信息是用數(shù)字表示(“0”表示未審核,“1”表示已經(jīng)通過(guò)審核)的,但在顯示時(shí)不能顯示為“0”或者“1”,要使軟件達(dá)到人性化效果,必須將其轉(zhuǎn)換成相應(yīng)的漢字。
? 表格中多余的文字使用…代替。
由于供求信息的內(nèi)容涉及的文字?jǐn)?shù)量很大,不能在一個(gè)單元格中顯示該條供求信息的所有內(nèi)容,否則界面不但不美觀,而且看上去很亂,因此本程序指定顯示18個(gè)字符,超過(guò)的使用…代替。
? 表格中高亮顯示行。
如果表格顯示的數(shù)據(jù)行數(shù)在3行或5行之內(nèi),可以不用高亮顯示行功能;如果數(shù)據(jù)量很大,在10或20行以上的數(shù)據(jù),用戶時(shí)間長(zhǎng)了很容易看串行,則需要使用高亮顯示行。高亮顯示行是當(dāng)鼠標(biāo)移動(dòng)到某行時(shí),該行顯示特殊顏色,移開(kāi)后顏色恢復(fù),如圖1.41所示。
實(shí)現(xiàn)代碼如下:
例程27 代碼位置:光盤(pán)\TM\01\SIS\ BackGround\ CheckInfo.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;");
//設(shè)置審核狀態(tài),并且設(shè)置相應(yīng)的顏色
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);
}
}
1.9.3 免費(fèi)供求信息審核頁(yè)實(shí)現(xiàn)過(guò)程
本模塊使用的數(shù)據(jù)表:tb_info。
1.設(shè)計(jì)步驟
(1)在網(wǎng)站的根目錄下創(chuàng)建BackGround文件夾,用于存放網(wǎng)站后臺(tái)管理Web窗體。
(2)在BackGround文件夾中新建一個(gè)Web窗體,命名為CheckInfo.aspx,主要用于免費(fèi)供求信息的審核。
(3)在Web窗體中添加一個(gè)Table,用于頁(yè)面的布局。
(4)在Table中添加一個(gè)Label控件,主要用于控制GridView控件分頁(yè)后的總頁(yè)數(shù)。主要屬性設(shè)置:AllowPaging屬性為True,即允許分頁(yè);PageSize屬性為24,即每頁(yè)顯示24條數(shù)據(jù);AutoGenerateColumns屬性為False,即不顯示自動(dòng)生成的列。
(5)在Table中添加3個(gè)RadioButton控件,分別用于控制顯示已審核供求信息、顯示未審核供求信息、顯示同類型所有供求信息。
(6)在Table中添加一個(gè)GridView控件,主要用于顯示供求信息及對(duì)供求信息的審核操作。
2.實(shí)現(xiàn)代碼
聲明全局靜態(tài)變量和類對(duì)象,用途參見(jiàn)代碼中注釋部分。在頁(yè)面的加載事件中,獲取供求信息的類型,并調(diào)用自定義GridViewBind()方法查詢相關(guān)類型的供求信息顯示在GridView控件中。值得注意的是,供求信息網(wǎng)所有分類供求信息審核都是在CheckInfo.aspx頁(yè)面實(shí)現(xiàn)的。頁(yè)面的加載事件中實(shí)現(xiàn)代碼如下:
例程28 代碼位置:光盤(pán)\TM\01\SIS\ BackGround\ CheckInfo.aspx.cs
Operation operation = new Operation(); //業(yè)務(wù)層類對(duì)象
static string infoType = ""; //供求信息類型
static int CheckType = -1; //3種類別:全部顯示(-1代表全部顯示)、顯示未審核(0)、顯示審核(1)
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
infoType = Request.QueryString["id"].ToString();
GridViewBind(infoType);
}
}
自定義GridViewBind()方法,用于查詢相關(guān)類型的供求信息,并且將查詢結(jié)果顯示在GridView表格控件中。實(shí)現(xiàn)代碼如下:
例程29 代碼位置:光盤(pán)\TM\01\SIS\ BackGround\ CheckInfo.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();
//顯示當(dāng)前頁(yè)數(shù)
lblPageSum.Text = "當(dāng)前頁(yè)為 " + (GridView1.PageIndex + 1) + " / " + GridView1.PageCount + " 頁(yè)";
}
GridView控件的RowDataBound事件是在將數(shù)據(jù)行綁定到數(shù)據(jù)時(shí)發(fā)生,那么在該事件下每綁定一行,就設(shè)置每行的相關(guān)功能,如高亮顯示行、設(shè)置審核狀態(tài)、多余的文字使用…替換。實(shí)現(xiàn)代碼如下:
例程30 代碼位置:光盤(pán)\TM\01\SIS\ BackGround\ CheckInfo.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;");
//設(shè)置審核狀態(tài),并且設(shè)置相應(yīng)的顏色
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);
}
}