從ASP遷移至ASP+ --將HTML表格轉換為ASP+數據列表 - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- 從ASP遷移至ASP+ --將HTML表格轉換為ASP+數據列表 (http://www.webasp.net/article/13/12575.htm) |
| -- 作者:未知 -- 發佈日期: 2004-08-25 |
| 原作者: 雨晨
我們從數據存儲中取回的數據將被用來顯示eVille提供的下兩節課程。基於頁面設計方面的考慮,標準的表格在這裡並不合適。數據需要以一種自定義的格式展示,用來顯示課程名,課程描述,以及報名的鏈接(該鏈接通過QueryString傳遞Session_ID)。下面是原始的ASP頁面利用ADO記錄集創建的一個循環,該循環為每條記錄創建一個新的行。 < 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+中,我們利用新的服務器控件,DataList。ASP+ DataList是用來創建自定義頁面佈局的新控件中的一種,這些佈局都是基於表格的。DataList通過你賦予的屬性來創建表格的行與列,同時使用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創建一個單列的表格。通過改變它的一系列屬性可使其創建多個列: < asp:DataList id="dlUpcoming" width="100%" RepeatDirection="Horizontal" RepeatColumns="2" runat="server"> 其他的數據顯示控件包括DataGrid(標準表格佈局)和Repeater(完全自定義佈局)。 如果我們現在來看頁面,表中的任何內容都不會顯示出來。這是因為我們雖然設計了佈局,卻沒提供數據。我們必須顯式地將數據(DataSet中的一個DataView)綁定到ASP+ DataList控件。通過設置DataSource屬性,調用將要顯示數據的控件的DataBind()方法,我們可以做到這一點。 由於ASP+ web應用程序在運行前經過編譯,我們毋須遵循頁面上的線性處理流程。即使DataList的ID直到頁面代碼的中部才被確定(當我們實際將控件放在頁面上時),我們還是可以在頁面起始部分的Page_Load事件中指定控件。這樣一來,當頁面裝載時數據就已經被綁定到控件。 < 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+服務器控件,使我們能有計劃性地訪問該控件。這樣我們便可以針對它的屬性以及方法來編寫代碼。在第一行中,我們將DataList的DataSource屬性設為DataSet中的DataView(一個單獨的數據表)。我們特別將它設為DataSet的表集中的Upcoming表的缺省視圖(view)。設置了DataSource後,我們就調用DataList控件的DataBind()方法,將SQL的查詢結果綁定到DataList控件。 |
| webasp.net |