1. 程式人生 > >《ASP.NET》數據綁定—DataList

《ASP.NET》數據綁定—DataList

name ng- upd 編號 發生 min 說了 eat emc

DataList控件是.NET中的一個控件。DataList控件以表的形式呈現數據(在屬性生成器中能夠編輯),通過該控件,您能夠使用不同的布局來顯示數據記錄(使用模板編輯)。比如,將數據記錄排成列或行的形式。您能夠對 DataList控件進行配置,使用戶可以編輯或刪除表中的記錄(使用EditItemTemplate模板和SelectedItemTemplate模板)

DataList控件不使用數據源控件的數據改動功能。您必須自己提供此代碼。

一、DataList Repeater比較

1、DataList比Repeater多了兩個模板:SelectedItemTemplate和EditItemTemplate,支持選擇和編輯功能。

2、DataList有可視化的模板編輯和屬性編輯,而Repeater控件不指定內置布局。與DataList相比,數據編輯起來比較麻煩。

3、DataList中的內容是以表格的形式呈現數據,這樣一來。使數據排列更加美觀。而Repeater自己須要加入表格才行。

4、DataList將項顯式放在HTML表中,Repeater則不然。

二、DataList中的模板

1、ItemTemplate、AlternationgItemTemplate、SeparatorTemplate、HeaderTemplate、FooterTemplate、SelectedItemTemplate 、 EditItemTemplate。

三、事件

1、冒泡事件

在“.NET” 框架包括三個支持事件冒泡的標準控件:Repeater、DataList和DataGrid控件。

這些控件能夠讓你捕獲其子控件的事件。當子控件產生一個事件時。事件就“冒泡”傳給包括該子控件的容器控件。而且容器控件就能夠運行一個子程序來處理該事件。

DataList控件支持事件冒泡。能夠捕獲DataList內包括的控件產生的事件。而且通過普通的子程序處理這些事件。說到這裏有些人可能不太明確事件冒泡的優點所在,這樣。我們反過來思考:假設沒有事件冒泡,那麽對於DataList內包括的每個控件產生的事件都須要定義一個對應的處理函數,假設DataList中包括10000個控件呢?或者很多其它呢?那我們得寫多少個事件處理程序。所以有了事件冒泡。無論DataList中包括多少個控件,我們僅僅須要一個處理程序就能夠了。我的理解就是將程序封裝。再通過繼承的機制決絕問題。


2、DataList支持的事件:

EditCommand:由帶有CommandName=”edit”的子控件產生。

CancelCommand:由帶有CommandName=”cancel”的子控件產生。
UpdateCommand:由帶有CommandName=”update”的子控件產生。
DeleteCommand:由帶有CommandName=”delete”的子控件產生。
ItemCommand:DataList的默認事件。


3、事件觸發的過程:有了這五個事件,那麽當我點擊了DataList控件中的某一個button的時候,應該觸發哪一個事件呢?什麽時候才觸發它們呢?

在“ASP點NET ”中有三個控件帶有CommandName屬性,各自是Button、LinkButton和ImageButton,能夠設置它們的CommandName屬性來表示容器控件內產生的時間類型。比方。假設設置DataList中的一個LinkButton的CommandName屬性為“update”。那麽點擊此button的時候。將會觸發DataList的UpdateCommand事件,我們能夠將相關處理代碼寫到相應的事件處理程序中去。

註意:ItemCommand事件是DataList控件產生的默認事件。不論什麽DataList控件中CommandName為delete/cancel/update/edit的button被點擊後,事件ItemCommand首先被觸發,然後才是對應的事件。

四、編輯DataList中的數據。

1、通過選擇DataList中某一項的主鍵而進行編輯,使用DataList控件中的DataKeys集合。

在選擇DataList中的一個項時。通常須要獲取與這個項相關聯的主鍵的值。能夠使用DataKeys集合來獲取與一個項想關聯的主鍵的值。在創建了DataKeys集合後,就能夠通過傳遞項的索引值給DataKeys集合來獲取DataList中與相關項關聯的主鍵值。比方。要獲取由 DataList顯示的第三項的主鍵值,就能夠是使用:DataList1.DataKeys[2],假設要在DataList控件的事件處理函數中發生事件的項的主鍵值。則用:DataList1.DataKeys[e.Item.ItemIndex]。

2、編輯DataList中的項

能夠使用DataList控件來編輯數據表中的某一條記錄,其實。在DataList中完畢這種操作很的方便,不像在asp中須要在多個頁面中來回切換。DataList控件具有一個名為EditItemTemplate的模板。在EditItemTemplate中放置表單控件,以便能在DataList中編輯特定的項。當DataList的EditItemIndex屬性的值為DataList某一項的索引的時候,相應的項將會以EditItemTemplate模板顯示。當屬性值為-1時,表示不顯示EditItemTemplate模板。

3、選擇DataList中的項

數據綁定到DataList後,DataList中的每一項都有一個索引號,第一項的索引為0,依次往下編號。我們能夠利用索引來確定DataList中詳細的項。
DataList默認以ItemTemplate或ItemTemplate+AlternatingItemTemplate模板顯示數據項。當DataList的SelectedIndex屬性的值為DataList某一項的索引的時候,相應的項將會以SelectedItemTemplate模板顯示。當該屬性值為-1時,表示不顯示SelectedItemTemplate模板。

四、小結

說了這麽多。光說不練是嘴把式,上面都是一些理論知識。僅僅有自己用到了才幹深深地體會到當中的功能,下一篇博客就是針對DataList的實踐篇。敬請關註。!!

《ASP.NET》數據綁定—DataList