第十章 BLOG事件日歷的實(shí)現(xiàn)
既然Doking’s BLOG是學(xué)習(xí)筆記,那么按日歷可以查出所有筆記和筆記回復(fù)。
難點(diǎn)分析:是不是要在模板中直接添加Calendar日歷控件?不!那是不行的!由于Calendar日歷控件是服務(wù)器控件,要在含有runat="server"表單該服務(wù)器控件,但一頁(yè)面中只能有一個(gè)含有runat="server"表單,不然有時(shí)會(huì)出現(xiàn)如圖10-1所示的錯(cuò)誤顯示。
圖10-1 頁(yè)面只能有一個(gè)含有runat="server"表單的錯(cuò)誤
那怎么辦?這里是采取嵌入式框架進(jìn)行轉(zhuǎn)移。
10.1 添加Calendar日歷控件
?。?)新建一個(gè)空白ASP.NET VB動(dòng)態(tài)頁(yè)。
?。?)插入帶出runat="server"表單,設(shè)置ID=”Calfrm”。
?。?)點(diǎn)擊ASP.NET快捷菜單下的“更多標(biāo)簽”按鈕,在彈出【標(biāo)簽選擇器】對(duì)話框中選擇“ASP.NET 標(biāo)簽”下的“asp Calendar”,如圖10-2所示。
圖10-2 插入“asp Calendar”標(biāo)簽
?。?)按“插入”按鈕,彈出【標(biāo)簽編輯器—Calendar】對(duì)話框,如圖10-3所示。在這個(gè)對(duì)話中,可以對(duì)Calendar日歷控件的樣式進(jìn)行設(shè)置,由于有中文,在這里就不多講了。
?。?)保存ASP.NET VB動(dòng)態(tài)頁(yè)為dkCalendar.aspx。在IE中瀏覽,如圖10-4所示。
圖10-3 【標(biāo)簽編輯器—Calendar】對(duì)話框
圖10-4 dkCalendar.aspx在IE中的瀏覽
在圖10-1-4中,可以看到星期的顯示太長(zhǎ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所示。
(3)此時(shí)新添代碼:
<%@ Import Namespace="" %>
輸入命名空間為System.Globalization,即代碼改為:
<%@ Import Namespace="System.Globalization" %>
?。?)再添加命名空間System.Threading,結(jié)果如圖10-6所示。
圖10-5 插入命名空間
圖10-6 插入命名空間后代碼
?。?)在代碼:
<%@ Import Namespace="System.Treading" %>
之后,空一行,并插入如下代碼:
<script runat="server">
Dim dkday‘定義選擇日期所產(chǎn)生的鏈接字符串的全局變量
‘改變星期顯示的函數(shù)
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的原代碼,切換到【標(biāo)簽】面板的【屬性】選項(xiàng)卡,展開(kāi)“外觀”選項(xiàng),選擇“DayNameFormat”項(xiàng)的下拉菜單,并選擇“Full”,如圖10-7所示。
?。?)保存dkCalendar.aspx,在IE中進(jìn)行瀏覽,結(jié)果如圖10-8所示。
圖10-7 選擇“DayNameFormat”值為“Full” 圖10-8 dkCalendar.aspx修改后在IE瀏覽
10.3 添加日歷事件
?。?)在Dreamweaver中打開(kāi)dkCalendar.aspx,切換到代碼視圖,選擇Calendar1的原代碼,右鍵單擊它,在彈出的快捷菜單中選擇“編輯標(biāo)簽(E)<asp:calendar>”,如圖10-9所示。
圖10-9 選擇“編輯標(biāo)簽(E)<asp:calendar>”
(2)在彈出【編輯標(biāo)簽—calendar】的對(duì)話框中,展開(kāi)“事件”項(xiàng),選擇“OnSelectionChanged”,在“Calendar —OnSelectionChanged”事件文本區(qū)域中,輸入“Calendar1_SelectionChanged”,按“確定”按鈕,如圖10-10所示。
圖10-10 編輯OnSelectionChanged事件
?。?)在代碼<script runat="server">標(biāo)簽中添加如圖10-11紅色圈所示的代碼。
圖10-11 添加Calendar1_SelectionChanged事件
(4)在標(biāo)簽<head></head>之間,插入如圖10-12紅色圈所示的代碼。
?。?)找標(biāo)簽<body>,將其改為如圖10-13紅色圈所示的代碼。
圖10-12 插入javascript函數(shù)dkwk
圖10-13 修改標(biāo)簽<body>
?。?)再次把Calendar1的“DayNameFormat”項(xiàng)的設(shè)為“Full”,參照10.2節(jié)中的第6步驟。
(7)保存dkCalendar.aspx,打開(kāi)index.aspx,在page_load函數(shù)中添加如下代碼:
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
結(jié)果如圖10-14所示。
圖10-14 在page_load函數(shù)中添加代碼
?。?)找到記錄集Ztre的原代碼,刪除其CommanText所在的命令行,結(jié)果如圖10-15紅色圈所示。
圖10-15 修改后記錄集Ztre的原代碼
?。?)保存index.aspx。
10.4 添加嵌入式框架
?。?)打開(kāi)模板dkblog.dwt.aspx,在ASP.NET快捷菜單中,點(diǎn)擊“更多標(biāo)簽”快捷按鈕,在彈出【標(biāo)簽選擇器】對(duì)話框中,選擇“HTML標(biāo)簽”,并選擇“iframe”項(xiàng),如圖10-16所示。
圖10-16 插入iframe標(biāo)簽(即嵌入式框架)
?。?)單擊“插入”按鈕,在彈出【標(biāo)簽編輯器—iframe】對(duì)話框中對(duì)要插入的嵌入式框架進(jìn)行有關(guān)設(shè)置如圖10-17所示。
圖10-17 對(duì)嵌入式框架進(jìn)行有關(guān)設(shè)置
?。?)按“確定”按鈕,返回到【標(biāo)簽編輯器—iframe】對(duì)話框,再按“關(guān)閉”按鈕。
?。?)保存模板dkblog.dwt.aspx,更新所有網(wǎng)頁(yè)。
?。?)在IE中瀏覽index.aspx,結(jié)果如圖10-18所示。
圖10-18 在IE中瀏覽index.aspx
提醒:其實(shí)日歷事件的實(shí)現(xiàn)是十分復(fù)雜的事件,這里只是給出一個(gè)簡(jiǎn)單的例子。這一節(jié)還有一個(gè)難點(diǎn)就是嵌入式框架對(duì)主窗口對(duì)象的控制,這里中只是舉了個(gè)用“parent.location.href”控制主窗口網(wǎng)頁(yè)的流轉(zhuǎn)。這些就留給讀者們慢慢研究了。
聯(lián)系客服