




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、13.2 需 求 分 析 本例要開(kāi)發(fā)一個(gè)簡(jiǎn)單的相冊(cè)管理系統(tǒng),對(duì)系統(tǒng)提出的需求是實(shí)現(xiàn)網(wǎng)站相冊(cè)系統(tǒng)的核心功能。系統(tǒng)需要實(shí)現(xiàn)下列功能:(1)匿名訪(fǎng)客可以瀏覽網(wǎng)站的全部圖片內(nèi)容。(2)注冊(cè)用戶(hù)可以建立不同的相冊(cè)。(3)注冊(cè)用戶(hù)可以上傳照片到自己的相冊(cè)并實(shí)現(xiàn)對(duì)相冊(cè)進(jìn)行管理。(4)網(wǎng)站維護(hù)人員如發(fā)現(xiàn)有人上傳非法內(nèi)容可以進(jìn)行刪除。 這里的刪除功能需要實(shí)現(xiàn)級(jí)聯(lián)刪除。 牛牛文庫(kù)文檔分享13.2 需 求 分 析 由需求分析所得結(jié)果,可將該系統(tǒng)的功能分為前臺(tái)和后臺(tái)兩個(gè)功能模塊,每個(gè)模塊實(shí)現(xiàn)的主要功能如下:前臺(tái):存在兩種用戶(hù)角色匿名訪(fǎng)客:瀏覽圖片注冊(cè)用戶(hù):登錄、密碼修改、用戶(hù)信息管理、創(chuàng)建相冊(cè)、 相冊(cè)管理、相冊(cè)查詢(xún)、
2、上傳圖片、圖片查詢(xún) 后臺(tái):網(wǎng)站管理員:登錄、密碼修改、用戶(hù)管理、相冊(cè)管理、 圖片管理 牛牛文庫(kù)文檔分享13.3 用 例 圖 根據(jù)前面的需求分析,設(shè)計(jì)網(wǎng)站相冊(cè)系統(tǒng)的用例圖,如圖13-1所示。 牛牛文庫(kù)文檔分享13.6 數(shù)據(jù)庫(kù)結(jié)構(gòu)本例數(shù)據(jù)庫(kù)設(shè)計(jì)如圖13-3所示。 牛牛文庫(kù)文檔分享13.7 開(kāi)發(fā)環(huán)境搭建1、創(chuàng)建網(wǎng)站userPhoto2、創(chuàng)建數(shù)據(jù)庫(kù)在網(wǎng)站目錄App_Data下創(chuàng)建數(shù)據(jù)庫(kù)photoData.mdf在數(shù)據(jù)庫(kù)中添加表注冊(cè)用戶(hù)表(userinfo)、用戶(hù)相冊(cè)表(userPhotoSet)、用戶(hù)相片表(userPhotos)、管理員表(adminuser)在表中添加字段 牛牛文庫(kù)文檔分享13.8
3、 數(shù)據(jù)訪(fǎng)問(wèn)層的實(shí)現(xiàn) 本例的主要代碼是使用ASP.NET控件實(shí)現(xiàn)的,但是對(duì)于訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的插入、刪除和更新等操作,使用ADO.NET類(lèi)庫(kù)直接執(zhí)行SQL語(yǔ)句更為方便。 在本系統(tǒng)開(kāi)發(fā)過(guò)程中,引入了一個(gè)SqlHelper類(lèi),用以簡(jiǎn)化數(shù)據(jù)庫(kù)相關(guān)操作的編程實(shí)現(xiàn)。3、創(chuàng)建SqlHelper類(lèi):在網(wǎng)站目錄App_Code下創(chuàng)建類(lèi)SqlHelper.cs。(如果網(wǎng)站中沒(méi)有App_Code 目錄,在網(wǎng)站名稱(chēng)處點(diǎn)擊右鍵,選擇添加ASP.NET文件夾,選擇App_Code 即可) 牛牛文庫(kù)文檔分享13.9 前臺(tái)程序代碼 相冊(cè)系統(tǒng)前臺(tái)要實(shí)現(xiàn)的功能為:訪(fǎng)問(wèn)者可以瀏覽其他注冊(cè)用戶(hù)上傳到網(wǎng)站的公開(kāi)相冊(cè)和相片信息,注冊(cè)后
4、可以上傳自己的相片到網(wǎng)站上面。前臺(tái)主要包括下面幾個(gè)文件。Default.aspx:相冊(cè)系統(tǒng)首頁(yè)。userReg.aspx:用戶(hù)注冊(cè)頁(yè)面。userMain.aspx:用戶(hù)首頁(yè),包括用戶(hù)信息管理和相冊(cè)管理功能。addPhotSet.aspx:添加相冊(cè)。modifyPhotosInfo.aspx:修改相冊(cè)信息。photoAdmin.aspx:相冊(cè)相片管理及上傳。 牛牛文庫(kù)文檔分享13.9.1 系統(tǒng)首頁(yè)實(shí)現(xiàn)1、創(chuàng)建Default.aspx頁(yè)面頁(yè)面功能:登錄、顯示最新創(chuàng)建相冊(cè),最新上傳相片,顯示相冊(cè)列表(使用DataList控件)在頁(yè)面上插入一個(gè)隱藏線(xiàn)格式的表格,用于頁(yè)面布局在上一步驟插入的表格中,向左
5、上方單元格插入一個(gè)Login控件,從工具箱中拖入3個(gè)DataList控件到頁(yè)面中,在每一個(gè)DataList控件上方插入一個(gè)SqlDataSource數(shù)據(jù)源控件,頁(yè)面布局設(shè)置為如圖所示 牛牛文庫(kù)文檔分享配置第一個(gè)SqlDataSource1數(shù)據(jù)源,保存連接字符串名字為“photoConnectionString”,進(jìn)入“配置Select語(yǔ)句”界面,因?yàn)楸纠枰獙?shí)現(xiàn)的查詢(xún)語(yǔ)句相對(duì)復(fù)雜,無(wú)法使用開(kāi)發(fā)環(huán)境提供的簡(jiǎn)單查詢(xún)語(yǔ)句生成工具生成,這里選擇“指定自定義SQL語(yǔ)句或存儲(chǔ)過(guò)程”選項(xiàng),單擊“下一步”按鈕在“定義自定義語(yǔ)句或存儲(chǔ)過(guò)程”對(duì)話(huà)框的“SQL語(yǔ)句”文本框中輸入查詢(xún)語(yǔ)句:“select top 10
6、 * from userPhotoSet where photoSetState=0 order by createTime desc”,完成數(shù)據(jù)源的配置。配置SqlDataSource2數(shù)據(jù)源,將SQL語(yǔ)句配置為“select top 10 * from userPhotos order by photoId desc”,其他步驟選擇為與上一個(gè)數(shù)據(jù)源一樣的配置。 牛牛文庫(kù)文檔分享配置SqlDataSource3數(shù)據(jù)源,設(shè)置數(shù)據(jù)源為從相冊(cè)表中讀取數(shù)據(jù),設(shè)置排序規(guī)則為按編號(hào)降序排列設(shè)置3個(gè)DataList控件的數(shù)據(jù)源為前面添加的對(duì)應(yīng)數(shù)據(jù)源控件 牛牛文庫(kù)文檔分享將顯示最新創(chuàng)建相冊(cè)的DataList
7、控件的模板代碼設(shè)置如下: () 牛牛文庫(kù)文檔分享將顯示最新上傳相片的DataList控件的模板代碼設(shè)置如下: img src=upphoto/ width=160 height=160 alt= / () 牛牛文庫(kù)文檔分享將顯示相冊(cè)列表的DataList控件的模板代碼設(shè)置如下: 相冊(cè)名稱(chēng) 創(chuàng)建用戶(hù) 創(chuàng)建時(shí)間 相冊(cè)狀態(tài) 關(guān)鍵詞 牛牛文庫(kù)文檔分享 牛牛文庫(kù)文檔分享綁定表達(dá)式 區(qū)別:1.eval是只讀數(shù)據(jù),bind是可更新的 2.當(dāng)對(duì)次表達(dá)式操作時(shí)候,必須用Eval 如Eval 單向綁定:數(shù)據(jù)是只讀的Bind 雙向綁定:數(shù)據(jù)可以更改,并返回服務(wù)器端,服務(wù)器可以處理更改后的數(shù)據(jù),如存入數(shù)據(jù)庫(kù). 牛牛文
8、庫(kù)文檔分享設(shè)置登錄控件DestinationPageUrl屬性為userMain.aspx,重載 “Authenticate”事件protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) /獲得輸入用戶(hù)名與密碼信息 string username = Login1.UserName.Replace(, ); string userpass = Login1.Password.Replace(, ); /生成程序語(yǔ)句 string sql = select count(*) from userinfo w
9、here username=username and userpass=userpass and isLock=0; SqlParameter param = new SqlParameter(username,SqlDbType.Char), new SqlParameter(userpass,SqlDbType.VarChar) ; param0.Value = username; param1.Value = userpass; /執(zhí)行查詢(xún)于語(yǔ)句,得到查詢(xún)結(jié)果 int usercount = (int)(sqlHelp.ExecuteScalar(sqlHelp.ConnectionSt
10、ringLocalTransaction, CommandType.Text, sql, param); 牛牛文庫(kù)文檔分享if (usercount 0) /查詢(xún)成功保存用戶(hù)名 e.Authenticated = true; Sessionusername = username; sql = update userinfo set letLoginTime=getdate() where username=username; SqlParameter sqlParams = new SqlParameter new SqlParameter(username, SqlDbType.VarCha
11、r) ; sqlParams0.Value = username; sqlHelp.ExecuteNonQuery(sqlHelp.ConnectionStringLocalTransaction, CommandType.Text, sql, sqlParams); 牛牛文庫(kù)文檔分享13.9.2 用戶(hù)注冊(cè)頁(yè)面2、創(chuàng)建頁(yè)面“userReg.aspx”頁(yè)面功能:實(shí)現(xiàn)注冊(cè),注冊(cè)成功后應(yīng)回到Default.aspx頁(yè)面從標(biāo)準(zhǔn)工具區(qū)中拖放一些文本框、復(fù)選框和按鈕控件,設(shè)置好控件位置,完成注冊(cè)界面的開(kāi)發(fā)將兩個(gè)密碼輸入框的文本模式設(shè)置為“Password”在前面四個(gè)文本框后面分別插入一個(gè)RequiredF
12、ieldValidator控件,用于驗(yàn)證用戶(hù)輸入,設(shè)置各個(gè)驗(yàn)證控件的ControlToValidate屬性值為對(duì)應(yīng)的文本框控件名。并設(shè)置ErrorMessage屬性值為“*”在確認(rèn)密碼的必填驗(yàn)證控件后面插入一個(gè)比較驗(yàn)證控件,設(shè)置比較驗(yàn)證控件的ControlToCompare屬性為確認(rèn)密碼文本框ID,然后設(shè)置ControlToValidate屬性為輸入密碼文本框ID,設(shè)置ErrorMessage屬性值為“兩次密碼輸入不一致” 牛牛文庫(kù)文檔分享13.9.2 用戶(hù)注冊(cè)頁(yè)面打開(kāi)首頁(yè),在登錄控件下插入一個(gè)HyperLink控件,設(shè)置NavigateUrl屬性為注冊(cè)頁(yè)面,Text屬性為“注冊(cè)”.雙擊“注冊(cè)
13、”按鈕,編寫(xiě)如下代碼,完成用戶(hù)注冊(cè)功能: 牛牛文庫(kù)文檔分享protected void Button1_Click(object sender, EventArgs e) string sql = select count(*) from userinfo where username=username; SqlParameter sqlParams = new SqlParameter new SqlParameter(username, SqlDbType.VarChar) ; sqlParams0.Value = txtUserName.Text; if (int)sqlHelp.Exe
14、cuteScalar(sqlHelp.ConnectionStringLocalTransaction, CommandType.Text, sql, sqlParams) 0) Response.Write(用戶(hù)名已經(jīng)存在!); else sql=insert into userinfo (username,userpass,regTime,letLoginTime,isLock,eMail,isOpen,userPost) ; sql += values(username,userpass,regTime,letLoginTime,isLock,eMail,isOpen,userPost)
15、; 牛牛文庫(kù)文檔分享sqlParams = new SqlParameter new SqlParameter(username,SqlDbType.VarChar), new SqlParameter(userpass,SqlDbType.VarChar), new SqlParameter(regTime,SqlDbType.DateTime), new SqlParameter(letLoginTime,SqlDbType.DateTime), new SqlParameter(isLock,SqlDbType.Bit), new SqlParameter(eMail,SqlDbType
16、.VarChar), new SqlParameter(isOpen,SqlDbType.Bit), new SqlParameter(userPost,SqlDbType.VarChar); sqlParams0.Value = txtUserName.Text; sqlParams1.Value = txtUserPass.Text; sqlParams2.Value = System.DateTime.Now; sqlParams3.Value = System.DateTime.Now; sqlParams4.Value = 0; sqlParams5.Value = txtEMail
17、.Text; sqlParams6.Value = cbIsOpen.Checked; sqlParams7.Value = txtPost.Text; if (sqlHelp.ExecuteNonQuery(sqlHelp.ConnectionStringLocalTransaction, CommandType.Text, sql, sqlParams) 0) Response.Write(注冊(cè)成功); else Response.Write(數(shù)據(jù)庫(kù)操作失敗); 牛牛文庫(kù)文檔分享13.9.3 用戶(hù)及相冊(cè)管理頁(yè)面3、創(chuàng)建頁(yè)面“userMain.aspx”頁(yè)面功能:修改密碼,修改用戶(hù)信息,顯示
18、相冊(cè)列表在頁(yè)面插入布局表格。在“修改密碼”文字下方插入一個(gè)“ChangePassword”控件在修改密碼部分下面插入一個(gè)表格,用于實(shí)現(xiàn)用戶(hù)信息修改功能在布局表格下方插入一個(gè)GridView控件和一個(gè)HyperLink控件 牛牛文庫(kù)文檔分享為GridView控件創(chuàng)建數(shù)據(jù)源,在“配置Select語(yǔ)句”界面中,選擇從“userPhotoSet”表中讀取所有的數(shù)據(jù),設(shè)置查詢(xún)條件為用戶(hù)名等于保存在Session中的用戶(hù)名在列編輯對(duì)話(huà)框中,只保留相冊(cè)名稱(chēng)、創(chuàng)建日期、關(guān)鍵詞、相冊(cè)狀態(tài)四列數(shù)據(jù),修改各列的HeaderText屬性為對(duì)應(yīng)的中文文字, 牛牛文庫(kù)文檔分享選中GridView控件,在屬性面板重載Row
19、DataBound方法,在RowDataBound方法中輸入如下代碼,將狀態(tài)顯示轉(zhuǎn)換為中文: protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) if (e.Row.RowType = DataControlRowType.DataRow) if (e.Row.Cells3.Text = 1) e.Row.Cells3.Text = 正常; else e.Row.Cells3.Text = 鎖定; e.Row.Cells4.Enabled = false; e.Row.Cells5.Enabl
20、ed = false; 牛牛文庫(kù)文檔分享 在創(chuàng)建GridView控件時(shí),必須先為GridView的每一行創(chuàng)建一個(gè)GridViewRow對(duì)象,創(chuàng)建每一行時(shí),將引發(fā)一個(gè)RowCreated事件;當(dāng)行創(chuàng)建完畢,每一行GridViewRow就要綁定數(shù)據(jù)源中的數(shù)據(jù),當(dāng)綁定完成后,將引發(fā)RowDataBound事件。如果說(shuō)我們可以利用RowCreated事件來(lái)控制每一行綁定的控件,那么我們同樣可以利用RowDataBound事件來(lái)控制每一行綁定的數(shù)據(jù),也就是讓數(shù)據(jù)如何呈現(xiàn)給大家。 RowType可以確定GridView中行的類(lèi)型,RowType是枚舉變量DataControlRowType中的一個(gè)值。Ro
21、wType可以取值包括 DataRow、Footer、Header、EmptyDataRow、Pager、Separator。很多時(shí)候,我們需要判斷當(dāng)前是否是數(shù)據(jù)行,通過(guò)如下代碼來(lái)進(jìn)行判斷: if (e.Row.RowType = DataControlRowType.DataRow) 牛牛文庫(kù)文檔分享 RowDeleting和RowDeleted事件 RowDeleting發(fā)生在刪除數(shù)據(jù)之前,RowDeleted發(fā)生在刪除數(shù)據(jù)之后。 使用RowDeleting事件,可以在真正刪除前再次確認(rèn)是否刪除,可以通過(guò)設(shè)置GridViewDeleteEventArgs.Cancel=True來(lái)取消刪除;
22、也可以用于判斷當(dāng)前數(shù)據(jù)庫(kù)記錄數(shù),如果只剩一條記錄且數(shù)據(jù)庫(kù)不能為空則提示并取消刪除操作。 使用RowDeleted事件,可以在刪除后,通過(guò)GridViewDeletedEventArgs的Exception屬性判斷刪除過(guò)程中是否產(chǎn)生異常,如無(wú)異常,則可以顯示類(lèi)似于” 1 Records deleted” 之類(lèi)的提示信息。 牛牛文庫(kù)文檔分享Example: protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)/取得當(dāng)前行號(hào),并取得當(dāng)前行的GridViewRow對(duì)象 int index=e.Row
23、Index ; GridViewRow gvr=GridView1.Rowsindex;/取得當(dāng)前行第二個(gè)單元格中的文字 str1 = gvr.Cells1.Text;/進(jìn)行提示 Message.Text =您將刪除一個(gè)用戶(hù),其姓名為+str1 ; protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)/如果沒(méi)有產(chǎn)生異常,則提示成功刪除,否則提示刪除失敗 if (e.Exception = null) Message.Text += 您成功刪除了+str1 ; else Message.Tex
24、t += 刪除失敗,請(qǐng)聯(lián)系管理員; 牛牛文庫(kù)文檔分享Keys集合 Keys集合中一般存放的是數(shù)據(jù)源中的主鍵字段的key和value的對(duì)應(yīng)值,如果主鍵由多個(gè)字段組成,那么Keys為每個(gè)鍵字段添加其字段名稱(chēng)和值。 牛牛文庫(kù)文檔分享選中“創(chuàng)建相冊(cè)”連接,設(shè)置NavigateUrl屬性為“addPhotoSet.aspx”在Page_Load方法中加入如下代碼,實(shí)現(xiàn)用戶(hù)不登錄不能訪(fǎng)問(wèn)本頁(yè)面功能:if (Sessionusername = null)Response.Redirect(Default.aspx);重載ChangPassword1控件ChangingPassword事件,添加代碼 牛牛文庫(kù)
25、文檔分享 protected void ChangePassword1_ChangingPassword(object sender, LoginCancelEventArgs e) e.Cancel = true; /獲得次輸入的新舊密碼,及登陸時(shí)保存的用戶(hù)名 string oldPassword = ChangePassword1.CurrentPassword; string newPassword = ChangePassword1.NewPassword; string username = Sessionusername.ToString(); /查詢(xún)數(shù)據(jù)庫(kù),驗(yàn)證舊密碼是否正確 s
26、tring sql = select count(*) from userinfo where username=username and userpass=userpass; SqlParameter param = new SqlParameter(username,SqlDbType.Char), new SqlParameter(userpass,SqlDbType.VarChar) ; param0.Value = username; param1.Value = oldPassword; int usercount = (int)(sqlHelp.ExecuteScalar(sql
27、Help.ConnectionStringLocalTransaction, CommandType.Text, sql, param); 牛牛文庫(kù)文檔分享if (usercount 0) Response.Write(修改成功); else Response.Write(操作錯(cuò)誤); 牛牛文庫(kù)文檔分享雙擊信息“修改”按鈕,輸入代碼 protected void Button1_Click(object sender, EventArgs e) string email = txtEMail.Text; bool isOpen = cbIsOpen.Checked; string userna
28、me = Sessionusername.ToString(); string sql = update userinfo set eMail=email,isOpen=isopen where username=username; SqlParameter param = new SqlParameter(eMail,SqlDbType.VarChar), new SqlParameter(isopen,SqlDbType.Bit), new SqlParameter(username,SqlDbType.VarChar) ; param0.Value = email; param1.Val
29、ue = isOpen; param2.Value = username; if (sqlHelp.ExecuteNonQuery(sqlHelp.ConnectionStringLocalTransaction,CommandType.Text, sql, param) 0) Response.Write(修改成功); else Response.Write(操作錯(cuò)誤); 牛牛文庫(kù)文檔分享13.9.4 增加相冊(cè)頁(yè)面4、創(chuàng)建頁(yè)面“addPhotSet.aspx”頁(yè)面功能:增加相冊(cè)在頁(yè)面中插入需要的文本框和按鈕控件,頁(yè)面布局如圖所示。雙擊“添加”按鈕,編寫(xiě)代碼,完成相冊(cè)添加功能: 牛牛文庫(kù)文檔分
30、享 protected void Button1_Click(object sender, EventArgs e) string username = (string)(Sessionusername); string sql=insert into userPhotoSet (username,photoSetName,photoSetContent,createTime,photoSetKey,photoSetState) ; sql += values(username,photoSetName,photoSetContent,createTime,photoSetKey,photoS
31、etState); SqlParameter sqlParams = new SqlParameter new SqlParameter(username, SqlDbType.VarChar), new SqlParameter(photoSetName, SqlDbType.VarChar), new SqlParameter(photoSetContent, SqlDbType.Text), new SqlParameter(createTime, SqlDbType.DateTime), new SqlParameter(photoSetKey, SqlDbType.VarChar),
32、 new SqlParameter(photoSetState, SqlDbType.TinyInt) ; 牛牛文庫(kù)文檔分享sqlParams0.Value = username; sqlParams1.Value = txtPhotoSetName.Text; sqlParams2.Value = txtPhotoSetContent.Text; sqlParams3.Value = System.DateTime.Now; sqlParams4.Value = txtPhotoSetKey.Text; sqlParams5.Value = 1; if (sqlHelp.ExecuteNon
33、Query(sqlHelp.ConnectionStringLocalTransaction, CommandType.Text, sql, sqlParams) 0) Response.Write(添加成功); else Response.Write(數(shù)據(jù)庫(kù)操作失敗); 牛牛文庫(kù)文檔分享13.9.5 修改相冊(cè)信息頁(yè)面5、創(chuàng)建頁(yè)面“modifyPhotosInfo.aspx”頁(yè)面功能:修改相冊(cè)信息(可以使用FormView控件更新功能,或者使用代碼實(shí)現(xiàn))打開(kāi)userMain.aspx,打開(kāi)GridView控件列編輯對(duì)話(huà)框。添加一個(gè)HyperLinkField列,將添加列的DataNavigat
34、eUrlFields屬性設(shè)置為“psId”, DataNavigateUrlFormatString屬性設(shè)置為“modifyPhotosInfo.aspx?psId=0”,HeaderText屬性設(shè)置為“修改相冊(cè)”,Text屬性設(shè)置為“修改相冊(cè)”,將GridView控件的DataKeyNames屬性設(shè)置為“psId” 牛牛文庫(kù)文檔分享在頁(yè)面中添加一個(gè)SqlDataSource數(shù)據(jù)源,設(shè)置查詢(xún)語(yǔ)句為從相冊(cè)表讀取編號(hào)、名稱(chēng)、介紹和關(guān)鍵詞字段,配置查詢(xún)條件為psId等于URL參數(shù)中的psid的屬性值,選中“生成INSERT、UPDATE和DELETE語(yǔ)句”選項(xiàng),在頁(yè)面上插入一個(gè)FormView控件,
35、設(shè)置FormView控件的數(shù)據(jù)源為前面步驟配置的數(shù)據(jù)源控件,修改FormView控件的默認(rèn)視圖為編輯視圖。 牛牛文庫(kù)文檔分享13.9.6 用戶(hù)查看相冊(cè)及上傳相片頁(yè)面6、創(chuàng)建頁(yè)面“photoAdmin.aspx”頁(yè)面功能:上傳相片(FileUpload控件),查看相冊(cè)中相片(DataList控件),刪除相片注意:上傳照片功能:將照片的各種信息存放在數(shù)據(jù)庫(kù)userPhotos表中將照片文件上傳到對(duì)應(yīng)的用戶(hù)目錄下(該目錄自動(dòng)創(chuàng)建)刪除照片功能:將照片記錄從數(shù)據(jù)庫(kù)表中刪除將照片文件也刪除 牛牛文庫(kù)文檔分享打開(kāi)“userMain.aspx”,進(jìn)入GridView控件的列編輯窗口,添加一個(gè)列, DataN
36、avigateUrlFields屬性設(shè)置為“psId”,DataNavigateUrlFormatString屬性設(shè)置為“photoAdmin.aspx?psId=0”,HeaderText屬性設(shè)置為“管理相片”,Text屬性設(shè)置為“管理相片”。在“photoAdmin.aspx”頁(yè)面添加一個(gè)FileUpload控件,在上傳相片地址上放添加“相冊(cè)名稱(chēng)”輸入框及“上傳照片”按鈕,布局如圖 牛牛文庫(kù)文檔分享在網(wǎng)站目錄中添加一個(gè)upphoto目錄,用戶(hù)上傳的相片均存入本目錄,雙擊“上傳照片”按鈕,編寫(xiě)如下代碼,完成照片上傳功能: 牛牛文庫(kù)文檔分享 using System.IO; protected
37、 void btnUpfile_Click(object sender, EventArgs e) if (filePhotoUrl.HasFile) /文件上傳 string username = Sessionusername.ToString(); string savePath = Server.MapPath(/upphoto) + / + username + /; if (!Directory.Exists(savePath) Directory.CreateDirectory(savePath); savePath += filePhotoUrl.FileName; fileP
38、hotoUrl.SaveAs(savePath); /文件信息存儲(chǔ)到數(shù)據(jù)庫(kù)中 savePath = username + / + filePhotoUrl.FileName; string psId = Request.ParamspsId; string sql=insert into userPhotos (username,psId,photoName,photoUrl,postTime) ; sql += values(username,psId,photoName,photoUrl,postTime); 牛牛文庫(kù)文檔分享SqlParameter sqlParams = new Sql
39、Parameter new SqlParameter(username, SqlDbType.VarChar), new SqlParameter(psId, SqlDbType.VarChar), new SqlParameter(photoName, SqlDbType.VarChar), new SqlParameter(photoUrl, SqlDbType.VarChar), new SqlParameter(postTime, SqlDbType.VarChar); sqlParams0.Value = username; sqlParams1.Value = psId; sqlP
40、arams2.Value = txtPhotoName.Text; sqlParams3.Value = savePath; sqlParams4.Value = System.DateTime.Now; if (sqlHelp.ExecuteNonQuery(sqlHelp.ConnectionStringLocalTransaction, CommandType.Text, sql, sqlParams) 0) DataList1.DataBind(); else Response.Write(數(shù)據(jù)庫(kù)操作失敗); 牛牛文庫(kù)文檔分享添加一個(gè)SqlDataSource數(shù)據(jù)源控件,查詢(xún)語(yǔ)句設(shè)置為
41、從userPhotos表讀取數(shù)據(jù),設(shè)置查詢(xún)條件為相冊(cè)編號(hào)等于URL地址中的相冊(cè)編號(hào),在頁(yè)面中插入一個(gè)DataList控件,設(shè)置控件數(shù)據(jù)源為上一步驟添加的數(shù)據(jù)源控件,設(shè)置RepeatColumns屬性為“5”,即設(shè)置DataList控件為一行顯示5條記錄,將顯示相片列表的DataList控件的模板代碼設(shè)置如下: 牛牛文庫(kù)文檔分享 a href=upphoto/ target=_blank img src=upphoto/ width=160 height=160 style=border:0 alt= / 名稱(chēng): 上傳時(shí)間: a href=?op=del&id=&psId=刪除 牛牛文庫(kù)文檔分享
42、在Page_Load方法中添加如下代碼段,實(shí)現(xiàn)權(quán)限控制及刪除相片功能。 protected void Page_Load(object sender, EventArgs e) if (Sessionusername = null) Response.Redirect(Default.aspx); string op = Request.Paramsop; if (op != null & op.Equals(del) string id = Request.Paramsid; string psId = Request.ParamspsId; string psql = select * f
43、rom userPhotos where photoId=id; string sql = delete from userPhotos where photoId=id; SqlParameter sqlParams = new SqlParameter new SqlParameter(id,SqlDbType.Int) ; sqlParams0.Value = id; 牛牛文庫(kù)文檔分享 SqlDataReader dread = sqlHelp.ExecuteReader(sqlHelp.ConnectionStringLocalTransaction, CommandType.Text
44、, psql, sqlParams); if (dread.Read() if (System.IO.File.Exists(Server.MapPath(upphoto/ + dread.GetString(4) System.IO.File.Delete(Server.MapPath(upphoto/ + dread.GetString(4); sqlHelp.ExecuteNonQuery(sqlHelp.ConnectionStringLocalTransaction, CommandType.Text, sql, sqlParams); Response.Redirect(photo
45、Admin.aspx?psId=+psId); 牛牛文庫(kù)文檔分享13.10 后臺(tái)代碼實(shí)現(xiàn) 相冊(cè)管理系統(tǒng)的后臺(tái)功能主要是為管理員提供用戶(hù)信息管理、相冊(cè)信息管理和相片信息管理功能,實(shí)現(xiàn)對(duì)一些用戶(hù)上傳非法內(nèi)容進(jìn)行修改和刪除。主要包含下面幾個(gè)文件。Login.aspx:登錄頁(yè)面。必須通過(guò)本頁(yè)面登錄后才能使用后臺(tái)功能。Default.aspx:后臺(tái)首頁(yè)。HTML框架頁(yè)面。menu.htm:后臺(tái)目錄頁(yè)面。modifyAdminPassword.aspx:修改管理員登錄密碼。userAdmin.aspx:用戶(hù)管理。PhotoSetAdmin.aspx:相冊(cè)管理。PhotoAdmin.aspx:相片管理。 牛
46、牛文庫(kù)文檔分享13.10.1 管理員登錄7、在項(xiàng)目中新建一個(gè)“admin”目錄,所有后臺(tái)相關(guān)文件都將放入本目錄,在admin目錄中添加“Login.aspx”頁(yè)面頁(yè)面功能:管理員登錄頁(yè)面中添加一個(gè)“Login”控件, 設(shè)置DestinationPageUrl屬性為Default.aspx頁(yè)面,重載Authenticate方法,編寫(xiě)代碼: 牛牛文庫(kù)文檔分享 protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) /獲得輸入用戶(hù)名與密碼信息 string adminuser = Login1.UserNa
47、me.Replace(, ); string adminpass = Login1.Password.Replace(, ); /生成程序語(yǔ)句 string sql = select count(*) from adminuser where adminname=adminname and adminpass=adminpass; SqlParameter param = new SqlParameter(adminname,SqlDbType.Char), new SqlParameter(adminpass,SqlDbType.VarChar) ; 牛牛文庫(kù)文檔分享 param0.Valu
48、e = adminuser; param1.Value = adminpass;/執(zhí)行查詢(xún)于語(yǔ)句,得到查詢(xún)結(jié)果 int usercount = (int)(sqlHelp.ExecuteScalar(sqlHelp.ConnectionStringLocalTransaction, CommandType.Text, sql, param); if (usercount 0) /查詢(xún)成功保存用戶(hù)名 e.Authenticated = true; Sessionadminuser = adminuser; else/查詢(xún)失敗 e.Authenticated = false; 牛牛文庫(kù)文檔分享13
49、.10.6 后臺(tái)目錄及后臺(tái)首頁(yè)8、在admin目錄下新建一個(gè)Default.aspx作為后臺(tái)首頁(yè),編寫(xiě)如下代碼: 相冊(cè)管理系統(tǒng)后臺(tái) 瀏覽器不支持框架頁(yè)面! 牛牛文庫(kù)文檔分享9、在admin目錄下建立一個(gè)menu.htm頁(yè)面,作為首頁(yè)左邊顯示的目錄頁(yè),在menu.htm中添加如下代碼: 用戶(hù)管理 相冊(cè)管理 修改管理密碼 牛牛文庫(kù)文檔分享13.10.2 用戶(hù)管理10、在admin目錄添加一個(gè)文件,文件名為“userAdmin.aspx”頁(yè)面功能:對(duì)用戶(hù)列表信息進(jìn)行刪除、編輯當(dāng)用戶(hù)被刪除時(shí),他所創(chuàng)建的相冊(cè)、上傳的相片均被刪除在頁(yè)面中放置一個(gè)數(shù)據(jù)源控件,配置數(shù)據(jù)源的查詢(xún)語(yǔ)句為從用戶(hù)表讀取除密碼之外的所
50、有字段,并啟動(dòng)生成數(shù)據(jù)操作語(yǔ)句,插入一個(gè)GridView控件,設(shè)置數(shù)據(jù)源為上一步配置的數(shù)據(jù)源,然后啟用分頁(yè)、編輯和刪除功能,打開(kāi)字段編輯對(duì)話(huà)框,將各個(gè)字段的HeaderText屬性修改為中文,將用戶(hù)名、注冊(cè)時(shí)間、最后登錄時(shí)間4個(gè)字段設(shè)置為只讀字段,即將字段的ReadOnly屬性設(shè)置為true 牛牛文庫(kù)文檔分享重載GridView1控件的RowDeleted方法,編寫(xiě)如下代碼,實(shí)現(xiàn)刪除用戶(hù)同時(shí)刪除相冊(cè)數(shù)據(jù)、相片數(shù)據(jù)及上傳相冊(cè)文件的功能: protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e) s
51、tring username = e.Keys0.ToString(); string psql = select * from userPhotos where username=username; string sql = delete from userPhotoSet where username=username; string sql1 = delete from userPhotos where username=username; SqlParameter sqlParams = new SqlParameter new SqlParameter(username, SqlDb
52、Type.VarChar); sqlParams0.Value = username; 牛牛文庫(kù)文檔分享SqlDataReader dread = sqlHelp.ExecuteReader(sqlHelp.ConnectionStringLocalTransaction, CommandType.Text, psql,sqlParams); while (dread.Read() System.IO.File.Delete(Server.MapPath(./upphoto/+dread.GetString(4); sqlHelp.ExecuteNonQuery(sqlHelp.Connect
53、ionStringLocalTransaction, CommandType.Text, sql, sqlParams); sqlHelp.ExecuteNonQuery(sqlHelp.ConnectionStringLocalTransaction, CommandType.Text, sql1, sqlParams); 牛牛文庫(kù)文檔分享13.10.3 相冊(cè)管理11、在admin目錄添加一個(gè)文件 “PhotoSetAdmin.aspx”頁(yè)面功能:對(duì)相冊(cè)信息進(jìn)行刪除、編輯當(dāng)相冊(cè)被刪除時(shí),相冊(cè)中的所有相片均被刪除放置一個(gè)數(shù)據(jù)源控件到頁(yè)面中,并啟動(dòng)配置向?qū)АE渲脭?shù)據(jù)源為查詢(xún)相冊(cè)表的所有數(shù)據(jù),并啟
54、用插入、修改和刪除功能,插入一個(gè)GridView控件,設(shè)置數(shù)據(jù)源為上一步驟配置的數(shù)據(jù)源,然后啟用分頁(yè)、編輯和刪除功能,打開(kāi)列編輯對(duì)話(huà)框,修改username列的HeaderText屬性為“用戶(hù)名”,修改ReadOnly屬性為true進(jìn)入頁(yè)面源代碼狀態(tài),將數(shù)據(jù)源控件的更新語(yǔ)句修改如下。刪除對(duì)上一步驟設(shè)置為只讀值的字段的修改操作: 牛牛文庫(kù)文檔分享 UpdateCommand=UPDATE userPhotoSet SET photoSetName = photoSetName, photoSetContent = photoSetContent, createTime = createTime,
55、 photoSetKey = photoSetKey, photoSetState = photoSetState WHERE psId = psId重載GridView1控件的RowDeleted方法,編寫(xiě)如下方法,實(shí)現(xiàn)刪除相冊(cè)、相冊(cè)包含的相片數(shù)據(jù)及上傳相冊(cè)文件功能: 牛牛文庫(kù)文檔分享 protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e) string psId = e.Keys0.ToString(); string psql = select * from userPhotos whe
56、re psId=psId; string sql = delete from userPhotoSet where psId=psId; string sql1 = delete from userPhotos where psId=psId; SqlParameter sqlParams = new SqlParameter new SqlParameter(psId, SqlDbType.VarChar); sqlParams0.Value = psId; SqlDataReader dread = sqlHelp.ExecuteReader(sqlHelp.ConnectionStrin
57、gLocalTransaction, CommandType.Text, psql, sqlParams); 牛牛文庫(kù)文檔分享while (dread.Read() if (System.IO.File.Exists(Server.MapPath(./upphoto/ + dread.GetString(4) System.IO.File.Delete(Server.MapPath(./upphoto/ + dread.GetString(4); sqlHelp.ExecuteNonQuery(sqlHelp.ConnectionStringLocalTransaction, CommandT
58、ype.Text, sql, sqlParams); sqlHelp.ExecuteNonQuery(sqlHelp.ConnectionStringLocalTransaction, CommandType.Text, sql1, sqlParams); 牛牛文庫(kù)文檔分享13.10.4 相片管理12、在admin目錄添加一個(gè)文件 “PhotoAdmin.aspx”頁(yè)面功能:對(duì)相片信息進(jìn)行刪除、編輯打開(kāi)編輯相冊(cè)管理頁(yè)面的GridView控件字段編輯窗口,添加一個(gè)HyperLinkField列,設(shè)置DataNavigateUrlFields屬性為“psId”,DataNavigateUrlFormatString屬性為“PhotoAdmin.aspx?psId=0”,Text屬性為“相片管理”, 牛牛文庫(kù)文檔分享在頁(yè)面中放置一個(gè)數(shù)據(jù)源控件,配置數(shù)據(jù)源為查詢(xún)相片表的所有數(shù)據(jù),設(shè)置查詢(xún)條件為相冊(cè)編號(hào)等于地址參數(shù)中的相冊(cè)編號(hào),在頁(yè)面中插入一個(gè)DataList控件,并將數(shù)據(jù)源設(shè)置為上一步添加的數(shù)據(jù)源,修改DataList控
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國(guó)弧焊發(fā)電機(jī)碳刷行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2025至2030年中國(guó)連鎖便利軟件數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)超級(jí)起蠟水?dāng)?shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)自動(dòng)調(diào)心型離合器軸承總成數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)電纜專(zhuān)用改性料數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)電子標(biāo)簽器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)牛肉餡數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)毛絨書(shū)包數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 硅酸鈣板天棚面層施工方案
- 2025至2030年中國(guó)時(shí)鐘計(jì)時(shí)器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 工科高等數(shù)學(xué)(下)知到章節(jié)答案智慧樹(shù)2023年上海海洋大學(xué)
- 兒童羽毛球教程
- 通信工程安全生產(chǎn)手冊(cè)
- 流程成熟度模型(PEMM)
- 催化動(dòng)力學(xué)分析法及其應(yīng)用
- 外研版英語(yǔ)九年級(jí)下冊(cè)詞匯表音標(biāo)打印
- 聯(lián)合國(guó)教科文組織(UNESCO):可持續(xù)發(fā)展教育-路線(xiàn)圖
- 延長(zhǎng)保修服務(wù)
- 西師大版三年級(jí)數(shù)學(xué)下冊(cè)第五單元小數(shù)的初步認(rèn)識(shí)
- GB/T 9074.1-2002螺栓或螺釘和平墊圈組合件
- GB/T 8014-1987鋁及鋁合金陽(yáng)極氧化陽(yáng)極氧化膜厚度的定義和有關(guān)測(cè)量厚度的規(guī)定
評(píng)論
0/150
提交評(píng)論