DataList的資料繫結

2021-06-14 10:04:49 字數 3392 閱讀 5887

8.4.1  datalist的資料繫結

datalist控制項中通過自定義模板來設定資料的顯示樣式,它支援如下模板型別:

itemtemplate:包含一些 html元素和控制項,將為資料來源中的每一行呈現一次這些html元素和控制項。

alternatingitemtemplate:包含一些html元素和控制項,將為資料來源中的每兩行呈現一次這些html元素和控制項。通常,可以使用此模板來為交替行建立不同的外觀,例如指定乙個與在itemtemplate屬性中指定的顏色不同的背景色。

selecteditemtemplate:包含一些元素,當使用者選擇datalist控制項中的某一項時將呈現這些元素。通常,可以使用此模板來通過不同的背景色或字型顏色直觀地區分選定的行,還可以通過顯示資料來源中的其他欄位來展開該項。

edititemtemplate:指定當某項處於編輯模式時的布局。此模板通常包含一些編輯控制項,如textbox控制項。

headertemplate和footertemplate:包含在列表的開始和結束處分別呈現的文字和控制項。

separatortemplate:包含在每項之間呈現的元素。典型的示例是一條直線(使用hr元素)。

通常根據不同的需要定義不同型別的項模板,datalist控制項根據項的執行時狀態自動載入相應的模板顯示資料,例如當某一項被選定後將會以selecteditemtemplate模板呈現資料,編輯功能被啟用時將以edititemtemplate模板呈現資料。

下面我們通過【例8-7】說明如何通過設定模板為datalist控制項定義資料的呈現樣式並完成資料繫結。

【例8-7】datalist控制項的資料繫結。

(1) 在databinding**中新建乙個名為datalistbingding.aspx的頁面,在頁面上新增乙個datalist控制項。

(2) 編輯datalist控制項,並設定項模板,進行顯示字段影射。

在vs2008環境中使用datalist控制項的快捷任務面板進入模板的編輯頁面,如圖8-27所示。

單擊【編輯模板】按鈕後進入模板編輯介面,如圖8-28所示。

在本例中只實現datalist控制項的資料繫結,所以只簡單地定義乙個itemtemplate即可,單擊模板型別後編輯itemtemplate模板樣式如圖8-29所示。

圖8-29  itemtemplate模板樣式

itemtemplate模板樣式中,包含乙個兩行一列的html table,第一行顯示,第二行顯示記錄中的其他字段。回顧一下gridview控制項,在設定繫結列時需要同時設定繫結列到資料字段之間的資料對映,datalist控制項中的項模板顯示資料來源每條記錄中的各個字段,也需要將模板中的顯示控制項影射到相應字段,才能在資料繫結後在模板項中顯示正確的資料。資料影射通過繫結表示式完成,在項模板中各個顯示控制項的頁面**中新增如下繫結表示式:,其中eval方法用於讀取資料繫結後當前顯示項中所呈現的資料項(某條記錄)的相應字段資料,eval方法的引數"***"用於指定記錄中要顯示的欄位名。我們可以這樣來理解表示式,當在後台**中為某種資料繫結控制項(如這裡的datalist)設定資料來源並進行資料繫結後,執行時資料來源中的記錄就會自動與顯示項關聯,有這種關聯作為上下文,只要指定欄位名就可以訪問到該記錄中的字段資料。因為eval方法需要在資料上下文中讀取資料,所以,表示式只能用在資料繫結控制項的模板定義中。

定義模板後的頁面**如下:

<

div>

<

asp:datalistid=

"datalist1"

runat

="server"

height

="354px"

repeatcolumns

="3"

horizontalalign

="justify"

repeatdirection

="horizontal"

>

<

itemtemplate

>

<

table

style

="width: 154px; height: 111px"

>

<

tr>

<

tdstyle

="width: 100px"

>

<

imgalt

="**"

src=

'./image/

'/>

td>

tr>

<

tr>

<

tdstyle

="width: 100px"

>

學號:<

%# eval("no") %

>

<

br/>

姓名:<

%# eval("name") %

>

<

br/>

年齡:<

%# eval("birth") %

>

<

br/>

住址:<

%# eval("address") %

>

td>

tr>

table

>

itemtemplate

>

asp:datalist

>

div>

項模板第一行控制項中的表示式表示讀取資料源記錄中的photo字段值作為名稱。

(3) 設定datalist的布局屬性,採用table布局,每行顯示5項,按行顯示,如圖8-30所示。

圖8-30  設定datalist布局屬性

(4) 在頁面後台類中新增資料繫結**,如下。

protected void page_load(object sender, eventargs e)  

void listbind()  

//以資料集中名為tabstudent的datatable作為資料來源,為控制項繫結資料  

datalist1.datasource

= ds

.tables["tabstudent"].defaultview;  

datalist1.databind();  

(5) 頁面的執行效果如圖8-31所示。

圖8-31  datalistbinding.aspx頁面執行效果

datalist的資料繫結事件

onitemdatabound事件發生在各行被繫結到源資料時被呼叫 some of the latest wrox press books isbn published 上面繫結到資料來源的各個字段 下面是指令碼 小結 datalistitemeventargs objargs物件包含了關於該事件和...

DataList逐行繫結

事件 itemdatabound 內容 datalist 繫結資料 逐行建立,逐行繫結 先建立行容器 itemcreated事件 行物件建立完成後立即觸發 itemdatabind 行物件資料繫結完成後觸發 建立行itemcreated 建立行後 就來執行itemcreated事件 繫結行itemd...

DataList繫結控制項的問題

1.獲取值的問題 如果是在頁面中獲取控制項label1 的值 label lb label datalist1.items 0 findcontrul label1 str strlb1 lb.text.tostring trim 如果是在datalist的itemdatabound事件中 則可以 ...