第七章 Doking's BLOG用戶登錄頁面的實現
已完成用戶的注冊,用戶現在可以登錄到網站中,發表筆記、筆記回復。
用戶登錄,經過驗證正確,頁面換了個用戶登錄后的面貌。
?。?)打開模板bkblog.dwt.aspx,在左邊欄插入表格yhtab,并設計如圖7-1黑色圈中所示。
?。?)插入關于YH表查詢的數據集yhlog,以驗證用戶登錄的正確。
?、賹祿痽hlog設為篩選,如圖7-2所示。

圖7-1 表格yhtab的設計圖

圖7-2 插入數據集yhlog
②點擊“高級”按鈕,切換到高級數據集模式,如圖7-3所示。

圖7-3 插入數據集yhlog
?、埸c擊參數“+”,彈出“編輯參數”對話框,填寫名稱為“@Logpas”,類型選擇“WChar”,如圖7-4所示。

圖7-4 添加參加Logpass
④點擊“建立”按鈕,彈出“生成值”對話框,名稱為“Logpass”,源選擇“表單變量”,如圖7-5所示。

圖7-5 生成值對話框
⑤單擊“確定”保存設置,一直回到數據集yhlog對話框。修改SQL語句,修改結果如圖7-6所示。

圖7-6 對數據集yhlog進行修改
(3)在<html>標簽之前,插入如圖7-7紅色圈所示的代碼。

圖7-7 定義函數uselog
?。?)拖拉模板bkblog.dwt.aspx中的數據集yhlog下的字段YHNAME到頁面任何位置,再拖拉數據集yhlog下的字段YHID在其后,代碼如下:
<%# yhlog.FieldValue("YHNAME", Container) %><%# yhlog.FieldValue("YHID", Container) %>
把上面代碼改為:
<%# uselog(yhlog.FieldValue("YHNAME", Container),yhlog.FieldValue("YHID", Container)) %>
(5)插入關于ZT表查詢的數據集bjre,返回該用戶發表的學習筆記總數。
?、賹祿O為“篩選”,篩選字段為:YHID,篩選方式為:輸入值,如圖7-8所示。

圖7-8 插入數據集bjre
②點擊“高級”,切換到高級數據集模式,將SQL修改成如圖7-9所示。

圖7-9 修改數據集bjre
③點擊“編輯”按鈕,在文本域中把YHID改為session(”USEID”),結果如圖7-10所示。

圖7-10 編輯數據集bire的參數
?、馨础按_定”鍵,再按“確定”鍵完成數據集bire。
?。?)插入關于HF表查詢的數據集plre,返回該用戶發表的學習筆記總數。除了查詢表不同外,其他設置與數據集bjre相同(可以先復制粘貼數據集plre,再進行修改)。
?。?)拖拉數據集bjre下的字段EPRl100到表格yhtab中的“發表筆記:”之后;拖拉數據集plre下的字段Eprl100到表格yhtab中的“發表回復:”之后。
?。?)把光標移到表格yhtab中的“用戶信息”之前,點擊asp.net快捷菜單下的“綁定數據”,結果如圖7-11所示。

圖7-11 插入綁定數據
保持光標在圖71紅色垂直線的位置,輸入:session(“USENAME”)
?。?)返回設計視圖,給表格yhtab中的“發表新筆記”建立超級鏈接:../ztfb.aspx
給表格yhtab中的“修改資料”建立超級鏈接:../yhsg.aspx
結果如圖7-12所示。

圖7-12 表格yhtab的修改
?。?0)選擇表格yhtab,返回代碼視圖,按“Ctrl+X”或在【編輯】菜單中選擇“剪切”,老方法:把它粘貼到新建立的記事本或Word文檔中。
(11)返回設計視圖,選擇表格logtab,把光標移至如圖7-13所示的紅色垂直線的位置。

圖7-13 移至光標所在位置
?。?2)輸入代碼,如圖7-14紅色圈中所示。

圖7-14 在標簽<form>之前插入代碼
?。?3)把光標移到Yhlogfrm結束標簽</form>之后,輸入代碼,如圖7-15紅色圈中所示。

圖7-15 標簽</form>之后插入代碼
(14)把第7步中剪切的表格yhtab粘貼在代碼<%end if%>代碼之前,<% else %>之后。
?。?5)保存模板bkblog.dwt.aspx。打開所有基本于bkblog.dwt.aspx模板建立的網頁,分別在【服務器行為】中把bkblog.dwt.aspx模板中新添加的數據集yhlog、bjre、plre,復制、粘貼過來。再插入如第3步驟的代碼,就OK了!
?。?6)在IE瀏覽器中瀏覽index.aspx,用戶登錄前如圖7-16所示,用戶登錄成功如圖7-17所示。記得ASP.NET是不支持gb2312編碼傳輸,要進行修改,上一章中已說過了,以后不再哆嗦。

圖7-16 用戶登錄前

圖7-17 用戶登錄后
提醒:為了方便讀者學習,教程分成模塊來寫。實際上一開始就得在模板中所有功能做好,特別是在模板必須插入的數據集及頁頭載入程序,因為這些在后期修改后不能更新網頁。
用戶登錄后,就可以對 各學習筆記發表回復信息。
?。?)打開hf.aspx,插入表單yhplfrm,再插入表格Hftab,在表格中插入服務器文本框控件,ID為HFNAME;插入服務器文本區域控件,ID為HFTEXT;插入“發表”按鈕,ID為plbottom,將其設為禁用,結果如圖7-18所示。

圖7-18 表格Hftab的有關設計
?。?)綁定數據session(“usename”)到表格Hftab中的“姓名:”之后(方法如7.1第8步驟綁定“用戶信息”前的用戶名)。
?。?)拖拉數據集Ztre下的字段ZTNAME到文本框HFNAME,在文本框HFNAME的屬性窗口中,把初始值:
<%# Ztre.FieldValue("ZTNAME", Container) %>
改為:
<%# “RE:”&Ztre.FieldValue("ZTNAME", Container) %>
(5)選擇按鈕plbottom,右鍵選擇狀態欄< input # plbottom>,在彈出快捷菜單中選擇“編輯標簽”,如圖7-19所示。

圖7-19 選擇< input # plbottom>快捷編輯標簽
(6)在彈出的< input # plbottom>快捷編輯標簽中把:
disabled=”true”
改為:
disabled=<%# iif((session("USENAME")<>nothing),false,true) %>
結果如圖7-20所示。

圖7-20 快捷< input # plbottom>編輯標簽
即設按鈕plbottom,當用戶登錄前為禁用,用戶登錄后為可用。
?。?)添加插入記錄服務器行為,提交值來自表單yhplfrm,選擇插入表格為HF,其他設置如圖7-21所示。

圖7-21 添加插入記錄服務器行為
在圖7-21中,可以看到字段HFID、HFTIME、YHID、ZTID沒有獲取值。字段HFID是自動編號,數據庫會自動給記錄添加數值;字段HFTIME在access中已設默認值為date(),所以數據庫會自動給新增加的記錄添加當天日期。那字段YHID就是登錄用戶的ID碼,字段ZTID就是要發表的筆記ID。所以要把登錄用戶的ID碼添加到字段YHID中,要發表的筆記ID碼添加到字段ZTID中。
(5)返回到代碼視圖,找到插入記錄(dkconn,HF)的代碼,如圖7-22黑色已選擇部分。

圖7-22 找到插入記錄(dkconn,HF)的代碼
(6)把代碼:
CommandText='<%# "INSERT INTO HF (HFNAME, HFTEXT) VALUES (?, ?,)" %>'
改為:
CommandText='<%# "INSERT INTO HF (HFNAME, HFTEXT, ZTID, YHID) VALUES (?, ?, ?, ?)" %>'
?。?)按次序添加參數:
<Parameter Name="@ZTID" Value='<%# Ztre.FieldValue("ZTID", Container) %>' Type="Integer" />
<Parameter Name="@YHID" Value='<%# SESSION("USEID") %>' Type="Integer" />
結果如圖7-23所示。

圖7-23 插入記錄(dkconn,HF)代碼的修改結果
?。?)在發布回復信息前,得對回復標題和回復的內容進行驗證,防止發布空標題或空內容的回復信息。參照6.2節中插入RequiredFieldValidato驗證控件方法,分別給文本框HFNAME、文本區域控件HFTEXT添加RequiredFieldValidato驗證控件。
(9)用戶發布回復信息時,還得給學習筆記的回復總數自動增加1,也就是給ZT表下的HFZS字段自動增加1。
?、僭凇痉掌餍袨椤棵姘逯校迦搿案掠涗洝狈掌餍袨?,設更新表格為ZT,暫時設提交值,來自表單yhplfrm,暫時設:‘HFZS’從‘HFTEXT’獲取值(作為‘Integer’);暫時設:‘ZTID’將‘HFTEXT’ 用作‘Integer’來選擇記錄
②為什么全是暫時的?那是為了先讓Dreamweaver自動生成一些代碼,后方便修改。先切換代碼視圖,找到更新記錄(dkconn,ZT)的原代碼,找到其中的代碼:
<Parameter Name="@HFZS" Value='<%# IIf((Request.Form("HFTEXT") <> Nothing), Request.Form("HFTEXT"), "") %>' Type="Integer" />
<Parameter Name="@ZTID" Value='<%# IIf((Request.Form("HFTEXT") <> Nothing), Request.Form("HFTEXT"), "") %>' Type="Integer" />
把它改為:
<Parameter Name="@HFZS" Value='<%# Ztre.FieldValue("HFZS", Container)+1 %>' Type="Integer" />
<Parameter Name="@ZTID" Value='<%# session("ztanw") %>' Type="Integer" />
(10)保存hf.aspx。
用戶登錄后,除了可以發表回復信息外,還可以發表新的學習筆記。
?。?)新建由模板bkblog.dwt.aspx生成動態網頁ztfb.aspx,在mainbody可編輯區域中插入一列五行的表格ztfb。
(2)添加數據集zthb,設篩選為YHID,并設參數為階段變量USENAME,其設計如圖7-24所示。

圖7-24 添加數據集zthb
?。?)拖拉數據集下的有關字段到表格ztfb中,方法參照第4.2節的方法。
?。?)打開hf.aspx,復制表單yhplfrm,把它粘貼到網頁ztfb.aspx中的表格zthb的第五行,清空文本框HFNAME,并進行必要的修改,結果如圖7-25所示。

圖7-25 表格ztfb的設計
?。?)把文本框HFNAME改名為ZTNAME,文本區域HFTEXT改名為ZTTEXT。
(3)設表格zthb的第一、二、三行為數據集zthb的重復區域,再在表格的第四行中插入數據集導航。
?。?)插入列表/菜單LMID,點擊其屬性窗口中的列表值,在彈出的列表值對話框中,輸入項目標簽為:設計項;值為:1,按“確定”鍵,如圖7-26所示。

圖7-26 LMID列表值對話框
?。?)保持列表/菜單LMIDl在選,切換到代碼視圖,找到列表/菜單LMID的原代碼,拖拉數據集menuda下的字段LMID,替換value等于號的數據1,如圖7-27所示。

圖7-27 拖拉數據集menuda下的字段LMID
?。?)拖拉數據集menuda下的字段LM,替換“設計項”,結果如圖7-28所示。

圖7-28 拖拉數據集menuda下的字段LM
(7)選擇圖7-3-5紅色圈中的代碼,并把它定義為數據集menuda的重復區域,結果如圖7-29所示。

圖7-29 定義列表中的數據集menuda重復區域
?。?)添加“插入記錄”服務器行為,其設置如圖7-30所示。

圖7-30 添加“插入記錄”服務器行為
(9)切換到代碼視圖,找到插入記錄(dkconn,ZT)的原代碼,找到代碼:
CommandText='<%# "INSERT INTO ZT (LMID, ZTNAME, ZYTEXT) VALUES (?, ?, ?)" %>'
改為:
CommandText='<%# "INSERT INTO ZT (LMID, ZTNAME, ZYTEXT,YHID) VALUES (?, ?, ?, ?)" %>'
(10)添加參數:
<Parameter Name="@YHID" Value='<%# session("USEID") %>' Type="Integer" />
結果如圖7-31所示。

圖7-31 插入記錄(dkconn,ZT)修改的原代碼
修改用戶資料頁面設計與用戶注冊頁面設計基本相同。
?。?)打開注冊頁面yhlogok.aspx,把它另存為yhsg.aspx,并進行適當的修改,結果如圖7-32所示。

圖7-32 yhsg.aspx頁面設計
?。?)刪除“插入記錄(dkconn,YH)”服務器行為,添加數據集yhsg,如圖7-33所示。

圖7-33 插入數據集yhsg
?。?)綁定數據集yhsg下的有關字段到相應的文本框中,結果如圖7-34所示。

圖7-34 綁定動態文本到有關文本框中
?。?)添加更新記錄服務器行為,暫時設:’YHID’將’YHNAME’用作’Integer’來選擇記錄,結果如圖7-35所示。

圖7-35 添加更記錄服務器行為
?。?)在更記錄的原代碼中,找到代碼:
<Parameter Name="@YHID" Value='<%# IIf((Request.Form("YHNAME") <> Nothing), Request.Form("YHNAME"), "") %>' Type="Integer" />
將其改為:
<Parameter Name="@YHID" Value='<%# IIf((Not Session("USEID") Is Nothing), Session("USEID"), "") %>' Type="Integer" />
?。?)保存yhsg.aspx。
新聞熱點
疑難解答