如果熟悉經典asp,即使函數不相同,那么你也會很熟悉asp.net中的數據綁定語法。數據綁定的表達式是aspx文件中<%# and %>中間的代碼。它允許將數據綁定到控制器,同時也允許綁定屬性、表達式和頁面上方法調用的結果綁定到控制器。雖然這一特征很容易使用,但是有時在確定什么內容被允許綁定和是否它已經被使用的時候又造成一定的混亂。
數據綁定要素
當頁面的asp.net中databind方法被調用的時候,數據綁定表達式與asp.net中的屬性、服務器控制屬性和數據源進行鏈接。在打開服務器控制的標簽或頁面上任何地方的時候,可以將表達式放在屬性值/數值對的數值這一邊。所有的數據綁定表達式,不管放在什么地方,都包含在<%# and %>字符中。
使用數據控制器的時候(repeater, datagrid等等),表達式的參數一般是數據源的列名。無論如何,只要它返回一個值,任何有效的表達式都是可以使用的。同樣,相同的語法也可用于外部列表控制。這包括在頁面上顯示值或組裝控制器屬性。
container.dataitem是dataitem針對某一特定細目在運行時的別名。它從數據源映射一個單獨的細目,例如從數據查詢中得到一行或從一個向量中得到一個單獨的元素等。dataitem的實際數據類型由數據源確定。因此,當處理一個整型向量時,dataitem也是整型的。
下面的列表回顧了一些vb.net的語法情況:
<%# container.dataitem %>--返回字符串向量
<%# container.dataitem("expression") %>--返回dataview 容器中的某一特定字段
<%# container.dataitem.propertyname %>--返回數據源中特定字符串的屬性值
<%# cstr(container.dataitem.propertyname) %>--返回屬性值并轉化成字符串形式
使用c#時,語法稍微有些不同。下面的列表包含了與上面列表相應的c#代碼。注意,基本的語法是一致的,但是在返回屬性值和數據類型的轉換時有變化。
<%# container.dataitem %>
<%# ((datarowview)container.dataitem)["propertyname"] %>
<%# ((objecttype)container.dataitem).propertyname %>
<%# ((objecttype)container.dataitem).propertyname.tostring() %>
當對頁面的屬性和方法進行作用時,語法是相容的。只要是返回字符串值,語法則完全相同。下面的列表給出了示例:
<%# propertyname %>--返回頁面水平屬性值
<asp:listbox id="lstvalues" datasource='<%# propertyname %>' runat="server">--返回與數據控制器綁定的頁面水平屬性值(向量、對象集等)
<%# (objectname.propertyname) %>--顯示頁面水平對象屬性值
<%# methodname() %>--顯示頁面方法返回的值
使用下面的語法可以使用頁面上的單個值(屬性和方法返回的值等等)
<%= value %>
listing a中c#代碼說明了在asp.net web表格中的數據綁定。它從sql sever northwind employees表中挑選出了雇員的名字和電話號碼。查詢值通過asp.net repeater控制器顯示。列值通過數據綁定插入。表格的窗體標題通過方法調用組裝。另外,dataitem的itemindex性質用于顯示行數。itemindex性質從0開始,在其顯示之間會加1。
listing b包含了等同的vb.net代碼。主要的不同之處在于vb.net中使用圓括號而c#中使用方括號。而且行的投射在vb.net中是不必要的。
使用contain.dataitem有些沉悶,因為隨時要注意數據類型和數據類型的轉化。微軟提供了databinder類,它可以進一步簡化開發。
使用databinder
微軟文檔(msdn)中詳細解釋了databinder類。此方法可以讓rad設計器輕易的產生解析數據綁定語法。此方法也可以用于web窗體頁面的聲明簡化從一種到另一類型的映射。
在asp.net頁面中使用數據值時,可以使用databinder 類的eval方法讓.net完成這個繁重的工作。eval方法接受先前被覆蓋的container.dataitem對象;它計算出表達式中每一確定字段的詳細數據并且將他們顯示出來。其語法如下:
databinder.eval(container.dataitem, "field name", "optional formatting")
采用此語法,可以使用databinder.eval重寫第一個示例,其c#代碼見listing c。listing d包含vb.net等同代碼。
databinder.eval在將工作推向系統方面的能力是很強的,同時也要注意系統定位元素和確定對象/數據類型的時間和資源的開銷很大。
豐富的選項
數據綁定使得向asp.net頁面中放入數據的工作變得相對簡單。有很多種不同數據綁定選項可供選擇,他們包括:綁定數據到控制器并且確定如何顯示,或在asp.net頁面上選擇聲明的數據綁定到控制器。最后,它由你的喜好所決定,但是有很多選擇終究是件好事。
tony patton作為軟件開發人員開始了其職業生涯,他已經通過了java、vb、lotus和xml認證。
商業源碼熱門下載www.html.org.cn
新聞熱點
疑難解答
圖片精選