從ASP遷移至ASP+ --將HTML表格轉(zhuǎn)換為ASP+數(shù)據(jù)下文
發(fā)表時間:2023-08-08 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]將HTML表格轉(zhuǎn)換為ASP+數(shù)據(jù)列表(DataList)作 者 : 雨晨 我們從數(shù)據(jù)存儲中取回的數(shù)據(jù)將被用來顯示eVille提供的下兩節(jié)課程。基于頁面設(shè)計方面的考慮,標(biāo)準(zhǔn)的表格在這里并不合適。...
將HTML表格轉(zhuǎn)換為ASP+數(shù)據(jù)列表(DataList)
作 者 : 雨晨
我們從數(shù)據(jù)存儲中取回的數(shù)據(jù)將被用來顯示eVille提供的下兩節(jié)課程。基于頁面設(shè)計方面的考慮,標(biāo)準(zhǔn)的表格在這里并不合適。數(shù)據(jù)需要以一種自定義的格式展示,用來顯示課程名,課程描述,以及報名的鏈接(該鏈接通過QueryString傳遞Session_ID)。下面是原始的ASP頁面利用ADO記錄集創(chuàng)建的一個循環(huán),該循環(huán)為每條記錄創(chuàng)建一個新的行。
< table width="100%" border="0">
< tr>
< td class="headerRow">Upcoming Events< /td>
< /tr>
< %Do While Not rsUpcoming.EOF%>
< tr>
< td>< p>< b>< %=rsUpcoming("Title")%>< /b>< br>
< %=rsUpcoming("Description")%>< /p>
< p>< a href="enroll.asp?SessionID=< %=rsUpcoming("Session_ID")%>">
Enroll Now!< /a>< /p>< br>
< /td>
< /tr>
< %
rsUpcoming.MoveNext
Loop
%>
< /table>
在ASP+中,我們利用新的服務(wù)器控件,DataList。ASP+ DataList是用來創(chuàng)建自定義頁面布局的新控件中的一種,這些布局都是基于表格的。DataList通過你賦予的屬性來創(chuàng)建表格的行與列,同時使用Template來控制布局。在下面的例子中,我們使用ItemTemplate來格式化每行的布局。該templates控制每個顯示出來的單元的布局(一個記錄對一個單元):
< tr>
< td class="headerRow">Upcoming Events< /td>
< /tr>
< /table>
< asp:DataList id="dlUpcoming" width="100%" runat="server">
< template name = "ItemTemplate">
< p>< b>< %# Container.DataItem("Title") %>< /b>< br/>
< %# Container.DataItem("Description") %>< /p>
< p>< a href="enroll.asp?SessionID=< %# Container.DataItem("Session_ID") %>">
Enroll Now!< /a>< /p>< br/>
< /template>
< /asp:DataList>
缺省情況下,DataList創(chuàng)建一個單列的表格。通過改變它的一系列屬性可使其創(chuàng)建多個列:
< asp:DataList id="dlUpcoming" width="100%"
RepeatDirection="Horizontal"
RepeatColumns="2"
runat="server">
其他的數(shù)據(jù)顯示控件包括DataGrid(標(biāo)準(zhǔn)表格布局)和Repeater(完全自定義布局)。
如果我們現(xiàn)在來看頁面,表中的任何內(nèi)容都不會顯示出來。這是因為我們雖然設(shè)計了布局,卻沒提供數(shù)據(jù)。我們必須顯式地將數(shù)據(jù)(DataSet中的一個DataView)綁定到ASP+ DataList控件。通過設(shè)置DataSource屬性,調(diào)用將要顯示數(shù)據(jù)的控件的DataBind()方法,我們可以做到這一點。
由于ASP+ web應(yīng)用程序在運行前經(jīng)過編譯,我們毋須遵循頁面上的線性處理流程。即使DataList的ID直到頁面代碼的中部才被確定(當(dāng)我們實際將控件放在頁面上時),我們還是可以在頁面起始部分的Page_Load事件中指定控件。這樣一來,當(dāng)頁面裝載時數(shù)據(jù)就已經(jīng)被綁定到控件。
< script language="vb" runat=server>
Sub Page_Load(Source As Object, E As EventArgs)
. . .
cmdUpcoming.FillDataSet(dsUpcoming, "Upcoming")
dlUpcoming.DataSource = dsUpcoming.Tables("Upcoming").DefaultView
dlUpcoming.DataBind()
End Sub
< /script>
使用諸如DataList這樣的ASP+服務(wù)器控件,使我們能有計劃性地訪問該控件。這樣我們便可以針對它的屬性以及方法來編寫代碼。在第一行中,我們將DataList的DataSource屬性設(shè)為DataSet中的DataView(一個單獨的數(shù)據(jù)表)。我們特別將它設(shè)為DataSet的表集中的Upcoming表的缺省視圖(view)。設(shè)置了DataSource后,我們就調(diào)用DataList控件的DataBind()方法,將SQL的查詢結(jié)果綁定到DataList控件。