第十章 BLOG事件日歷的實(shí)現
既然Doking’s BLOG是學(xué)習筆記,那么按日歷可以查出所有筆記和筆記回復。
難點(diǎn)分析:是不是要在模板中直接添加Calendar日歷控件?不!那是不行的!由于Calendar日歷控件是服務(wù)器控件,要在含有runat="server"表單該服務(wù)器控件,但一頁(yè)面中只能有一個(gè)含有runat="server"表單,不然有時(shí)會(huì )出現如圖10-1所示的錯誤顯示。

圖10-1 頁(yè)面只能有一個(gè)含有runat="server"表單的錯誤
那怎么辦?這里是采取嵌入式框架進(jìn)行轉移。
10.1 添加Calendar日歷控件
?。?)新建一個(gè)空白ASP.NET VB動(dòng)態(tài)頁(yè)。
?。?)插入帶出runat="server"表單,設置ID=”Calfrm”。
?。?)點(diǎn)擊ASP.NET快捷菜單下的“更多標簽”按鈕,在彈出【標簽選擇器】對話(huà)框中選擇“ASP.NET 標簽”下的“asp Calendar”,如圖10-2所示。

圖10-2 插入“asp Calendar”標簽
?。?)按“插入”按鈕,彈出【標簽編輯器—Calendar】對話(huà)框,如圖10-3所示。在這個(gè)對話(huà)中,可以對Calendar日歷控件的樣式進(jìn)行設置,由于有中文,在這里就不多講了。
?。?)保存ASP.NET VB動(dòng)態(tài)頁(yè)為dkCalendar.aspx。在IE中瀏覽,如圖10-4所示。

圖10-3 【標簽編輯器—Calendar】對話(huà)框

圖10-4 dkCalendar.aspx在IE中的瀏覽
在圖10-1-4中,可以看到星期的顯示太長(cháng)了,很難看!如果顯示為“日、一、二、三、四、五、六”,那就好了。
10.2 修改Calendar的星期顯示
?。?)在Dreamweaver中打開(kāi)dkCalendar.aspx,切換到代碼視圖,尋找如下代碼:
<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="gb2312" %>
把它改為:
<%@ Page Language="VB" Debug="true" Culture="zh-CN"%>
?。?)點(diǎn)擊ASP.NET快捷菜單下的“а:xy”按鈕,插入命名空間,如圖10-5所示。
?。?)此時(shí)新添代碼:
<%@ Import Namespace="" %>
輸入命名空間為System.Globalization,即代碼改為:
<%@ Import Namespace="System.Globalization" %>
?。?)再添加命名空間System.Threading,結果如圖10-6所示。

圖10-5 插入命名空間

圖10-6 插入命名空間后代碼
?。?)在代碼:
<%@ Import Namespace="System.Treading" %>
之后,空一行,并插入如下代碼:
<script runat="server">
Dim dkday‘定義選擇日期所產(chǎn)生的鏈接字符串的全局變量
‘改變星期顯示的函數
Private Sub Calendar1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Calendar1.PreRender
Dim dkwek = System.Threading.Thread.CurrentThread
Dim dknew = System.Globalization.CultureInfo.CurrentCulture.Clone()
dknew.DateTimeFormat.DayNames = New String() {"日", "一", "二", "三", "四", "五", "六"}
dknew.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Sunday
dkwek.CurrentCulture = dknew
End Sub
</script>
?。?)選擇日歷控件Calendar1的原代碼,切換到【標簽】面板的【屬性】選項卡,展開(kāi)“外觀(guān)”選項,選擇“DayNameFormat”項的下拉菜單,并選擇“Full”,如圖10-7所示。
?。?)保存dkCalendar.aspx,在IE中進(jìn)行瀏覽,結果如圖10-8所示。


圖10-7 選擇“DayNameFormat”值為“Full” 圖10-8 dkCalendar.aspx修改后在IE瀏覽
10.3 添加日歷事件
?。?)在Dreamweaver中打開(kāi)dkCalendar.aspx,切換到代碼視圖,選擇Calendar1的原代碼,右鍵單擊它,在彈出的快捷菜單中選擇“編輯標簽(E)<asp:calendar>”,如圖10-9所示。

圖10-9 選擇“編輯標簽(E)<asp:calendar>”
?。?)在彈出【編輯標簽—calendar】的對話(huà)框中,展開(kāi)“事件”項,選擇“OnSelectionChanged”,在“Calendar —OnSelectionChanged”事件文本區域中,輸入“Calendar1_SelectionChanged”,按“確定”按鈕,如圖10-10所示。

圖10-10 編輯OnSelectionChanged事件
?。?)在代碼<script runat="server">標簽中添加如圖10-11紅色圈所示的代碼。
圖10-11 添加Calendar1_SelectionChanged事件
?。?)在標簽<head></head>之間,插入如圖10-12紅色圈所示的代碼。
?。?)找標簽<body>,將其改為如圖10-13紅色圈所示的代碼。

圖10-12 插入javascript函數dkwk

圖10-13 修改標簽<body>
?。?)再次把Calendar1的“DayNameFormat”項的設為“Full”,參照10.2節中的第6步驟。
?。?)保存dkCalendar.aspx,打開(kāi)index.aspx,在page_load函數中添加如下代碼:
if Request.QueryString("dkday")<>nothing then
Ztre.CommandText="SELECT * FROM ZTRE WHERE cstr(ZITIME) LIKE ‘%" &Request.QueryString("dkday")&"%‘ ORDER BY ZITIME DESC"
else
if (request.QueryString("menanw")<>nothing) or (session("menanw")<>nothing) then
Ztre.CommandText="SELECT * FROM ZTRE WHERE LMID = ? ORDER BY ZITIME DESC"
else
Ztre.CommandText="SELECT * FROM ZTRE ORDER BY ZITIME DESC"
end if
end if
結果如圖10-14所示。

圖10-14 在page_load函數中添加代碼
?。?)找到記錄集Ztre的原代碼,刪除其CommanText所在的命令行,結果如圖10-15紅色圈所示。

圖10-15 修改后記錄集Ztre的原代碼
?。?)保存index.aspx。
10.4 添加嵌入式框架
?。?)打開(kāi)模板dkblog.dwt.aspx,在A(yíng)SP.NET快捷菜單中,點(diǎn)擊“更多標簽”快捷按鈕,在彈出【標簽選擇器】對話(huà)框中,選擇“HTML標簽”,并選擇“iframe”項,如圖10-16所示。

圖10-16 插入iframe標簽(即嵌入式框架)
?。?)單擊“插入”按鈕,在彈出【標簽編輯器—iframe】對話(huà)框中對要插入的嵌入式框架進(jìn)行有關(guān)設置如圖10-17所示。

圖10-17 對嵌入式框架進(jìn)行有關(guān)設置
?。?)按“確定”按鈕,返回到【標簽編輯器—iframe】對話(huà)框,再按“關(guān)閉”按鈕。
?。?)保存模板dkblog.dwt.aspx,更新所有網(wǎng)頁(yè)。
?。?)在IE中瀏覽index.aspx,結果如圖10-18所示。

圖10-18 在IE中瀏覽index.aspx
提醒:其實(shí)日歷事件的實(shí)現是十分復雜的事件,這里只是給出一個(gè)簡(jiǎn)單的例子。這一節還有一個(gè)難點(diǎn)就是嵌入式框架對主窗口對象的控制,這里中只是舉了個(gè)用“parent.location.href”控制主窗口網(wǎng)頁(yè)的流轉。這些就留給讀者們慢慢研究了。
聯(lián)系客服