DreamwaverMX與ASP.NET(四)

來源:互聯網
上載者:User
asp.net 4.利用DataList組件顯示資料集

相關介紹:

DataList是功能強化的Repeater控制項,除了有Repeater原有的功能外,還可以設定單行顯示資料的筆數(RepeatColumn),被選項樣板(SelectedItemTemple),編輯項樣板(EditTemplate)。但是DataList會將輸出的資料安排在表格中輸出,而Repeater則更忠於樣板的定義,不會添加任何HTML標記。(注意:為了能顯示代碼,以下所有代碼都在“<”之後和“>”之前加了空格,不便之處請多原諒!)

STEP 1建立頁面

我們要建立的頁面就如下圖所示。當我們點擊Detail的超級連結時就會彈出詳細資料,正如第一項中所示。點擊Close時,詳細資料就會關閉,恢複原來的樣子。


[圖 1-1 頁面示範]

先選擇要顯示的資料。為了顯示歐洲的資料(即Region_ID=3),我們可以在Dataset設定中選定篩選Region_ID=3的資料。


[圖 1-2資料篩選]

用Datalist控制項做一個資料簡要顯示的頁面。我們先建立一個無資料的頁面。然後選擇Application面板中的Server behavior。單擊”+”,選擇DataList。


[圖1-3 DataList選擇頁面]

在彈出來的對話方塊中,我們可以根據需要對應的地方加入頁面模板。

u Header: 表頭模板

u Item: 資料項目模板

u Alternating Item: 交叉顯示模板

u Edit Item: 修改模板((預設是沒有顯示出來的,必須通過事件響應才可以顯示)

u Selected Item: 選中後的顯示的模板(同樣須通過事件響應才可以顯示)

u Separator: 分隔模板

u Footer: 表底模板


[圖 1-4 編輯DataList對話方塊]
我們可以通過往Contents中添加HTML代碼製作所需的模板,同時也可以通過單擊 按鈕來添加資料項目。單擊次按鈕後,就會彈出資料項目對話方塊讓你選擇所需的資料。並在Contents輸入框中加入

< %# DataBinder.Eval(Container.DataItem, "資料項目") % >

的代碼用於顯示資料。


[圖1-5 添加資料項目]

為了達到預覽的效果,首先在Header中加入代碼:Location Name。用以顯示標題。在Item中加入代碼:

< %# DataSet1.FieldValue("LOCATION_NAME", Container) % >,用Location_name來做每一項的標題。

在Alternating Item中加入代碼

< fontcolor="#0000FF" >< %#DataSet1.FieldValue("LOCATION_NAME",Container)% >< /font >

以不同的字型顏色來顯示資料。

雖然Selected Item並不能馬上顯示,但是我們還應寫下代碼,以備以後調用。如下:

Address:

< %# DataSet1.FieldValue("ADDRESS", Container) % >

< BR >

City:

< %# DataSet1.FieldValue("CITY", Container) % >

< BR >

Telephone:

< %# DataSet1.FieldValue("TELEPHONE", Container) % >

< BR >

單擊OK,接著預覽頁面,下圖就是以上代碼的效果了。我們等一下會去實現顯示出Selected Item項的效果的。


[圖1-6 最初預覽]
DataList區別Repeater的一個不同點就是可以設定單行顯示多筆資料,在DataList編輯視窗中可以進行設定。


[圖 1-7 設定單行顯示多筆資料]

選擇Use Line Breaks項就只是有一個< BR >標記進行分開資料。選擇Use a Table則是以表格的形式輸出,而且可以通過設定Table Columns來確定單行顯示資料的筆數。

STEP2 編寫代碼

Selected Item時需要通過事件來顯示的,所以我們需要建立按鈕以啟動事件。

j添加LinkButton,用以產生事件。將游標移到原始碼視窗的< ItemTemplate >與< /ItemTemplate >中,單擊more tags ,在彈出的對話方塊中選擇asp:LinkButton控制項。


[圖2-1 Tag Chooser對話方塊]

在編輯LinkButton對話方塊中,設定LinkButton的屬性。在ID輸入框中輸入名稱:Detail,

在Command Name中輸入”Detail”用於產生事件的命令,在Text對話方塊中輸入Detail(將會顯示出來)                               


[圖 2-2 LinkButton編輯框]

然後再Layout中選擇所需的顏色,單擊OK,即可產生代碼。

< asp:LinkButton BackColor="#FFFFFF" CommandName="Detail" ForeColor="#000000" ID="Detail" runat="server" Text="Detail" >< /asp:LinkButton >

為了在交叉顯示中也具有這樣的效果,我們需要在< AlternatingItemTemplate >與< /AlternatingItemTemplate >中也插入相同的代碼。
同時為了關閉彈出來的選擇後樣板,同樣需要產生命令,所以要添加多一個Linkbutton。這樣就需要在< SelectedItemTemplate >< /SelectedItemTemplate >中插入代碼:

< asp:LinkButton BackColor="#FFFFFF" CommandName="Close" ForeColor="#000000" ID="Close" runat="server" Text="Close" >< /asp:LinkButton >

k有了命令,我們還需要使用程式來解釋這個命令。其實過程並不複雜,只需要加入一小部分代碼。在< head >< /head >中添加如下代碼:

< script language="VB" runat="server" >

Sub DataList_ItemCommand(sender as Object,e as DataListCommandEventArgs)

If e.CommandSource.CommandName="Detail" Then

DataList1.SelectedIndex=e.Item.ItemIndex

ElseIf e.CommandSource.CommandName="Close" Then

DataList1.SelectedIndex=-1

End If

DataList1.DataBind()

End sub

< /script >

程式可以取得你點擊LinkButton的命令(CommandName)來判斷要執行的程式。當DataList的SelectedIndex屬性設定為e.Item.ItemIndex,就會開啟SelectedItemTemplate頁。如果命令為Close則DataList的SelectedIndex屬性設定為-1(即沒有資料項目被選中),則DataList會用ItemTemplate項樣板顯示此一項資料。

在< asp:DataList >中還要添加程式碼片段

OnItemCommand="DataList_ItemCommand"

以聲明與程式段DataList_ItemCommand的關係。

按”F12”預覽,頁面就會顯示預想的效果。


[圖 2-3 最終預覽版]
附上主要程式段的原始碼:

Sub DataList_ItemCommand(sender as Object,e as DataListCommandEventArgs)

If e.CommandSource.CommandName="Detail" Then

DataList1.SelectedIndex=e.Item.ItemIndex

ElseIf e.CommandSource.CommandName="Close" Then

DataList1.SelectedIndex=-1

End If

DataList1.DataBind()

End sub

< form runat="server" >

< asp:DataList id="DataList1"

runat="server"

RepeatColumns="1"

RepeatDirection="Vertical"

RepeatLayout="Flow"

DataSource="< %# DataSet1.DefaultView % >"

OnItemCommand="DataList_ItemCommand" >

< HeaderTemplate >

Location Name < /HeaderTemplate >

< ItemTemplate >

< %# DataSet1.FieldValue("LOCATION_NAME", Container) % >

< asp:linkbutton BackColor="#FFFFFF" CommandName="Detail" ForeColor="#000000" ID="Detail" runat="server" Text="Detail" >< /asp:linkbutton >

< /ItemTemplate >

< AlternatingItemTemplate >< font color="#0000FF" >

< %# DataSet1.FieldValue("LOCATION_NAME", Container) % >

< /font >

< asp:linkbutton BackColor="#FFFFFF" CommandName="Detail" ForeColor="#000000" ID="Detail" runat="server" Text="Detail" >< /asp:linkbutton >< /AlternatingItemTemplate >

< SelectedItemTemplate >Address:

< %# DataSet1.FieldValue("ADDRESS", Container) % >

< BR >

City:

< %# DataSet1.FieldValue("CITY", Container) % >

< BR >

Telephone:

< %# DataSet1.FieldValue("TELEPHONE", Container) % >

< BR >

< asp:LinkButton BackColor="#FFFFFF" CommandName="Close" ForeColor="#000000" ID="Close" runat="server" Text="Close" >< /asp:LinkButton >

< /SelectedItemTemplate >

< /asp:DataList >

< /form >

DataList還有Edit Item的樣板,主要用於資料更新。此書會在後面的部分介紹到。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.