對 web 窗體頁中的各項控制項屬性進行資料繫結不是通過直接將屬性繫結到資料來源來實現的。而是通過使用特殊的表示式格式來實現資料繫結的。與要繫結到的資料有關的資訊被置入該表示式,然後將表示式的結果分配給控制項屬性。
例如,假設您要將textboxweb 伺服器控制項繫結到一些資料。您建立資料繫結表示式並將其分配給控制項的text屬性,以便該值將在控制項中顯示。
下面的示例說明控制項宣告在 html 檢視中的大體形式。控制項的text屬性被繫結到包含單個記錄的資料檢視。資料繫結表示式是用字元<%#
和%>
分隔的。
'>同樣,可以使用資料繫結表示式來設定imageweb 伺服器控制項的 imageurl 屬性。在這種情況下,您是在從資料庫中提取乙個字串,該字串包含要顯示的圖形的路徑和檔名。乙個示例可能類似於如下所示:
'>在 visual studio 中,「屬性」視窗向您提供建立資料繫結表示式的工具。您還可以選擇自行建立繫結表示式並在 web 窗體設計器的 html 檢視中輸入它們。
使用資料繫結表示式在以下幾個方面為您提供靈活性:
儘管您可以實際使用解析為乙個值的任何表示式來進行資料繫結,但在大多數情況下,您將繫結到某些型別的資料來源。最為常見的情況是資料集或資料檢視中的表,表中包含您感興趣的單個記錄。為了簡化此型別的資料繫結,asp.net 伺服器控制項支援名為 databinder 的類,它執行某些提取資料並使其可用於控制項屬性的工作。
可以通過呼叫其eval方法來使用databinder類,這要求兩個引數:
下面的示例說明與上面的文字框所執行的相同的資料繫結,但這一次使用databinder類。
'>先前設定image控制項imageurl屬性的示例可能類似於如下所示。在該示例中,乙個格式設定表示式在databinder.eval方法的第二個引數(可選)中傳遞;該表示式將乙個路徑當作字首新增到資料中。
使用databinder類的優點是:通常不需要在每個往返過程中都呼叫databind方法(即在頁初始化中不需要檢查回發),因為這樣做會替換控制項中的值。例如,如果您使用datagrid控制項,該控制項可能包含您要處理的更改。在您呼叫databind時,用來自資料來源的值代替網格的內容。如果在頁初始化期間執行此操作,您將在有機會處理更改前,失去網格中的更改。您而是應通常在為該事件執行了資料處理後,在事件處理程式中呼叫databind方法。為了提供控制項可以繫結到的值,必須在執行時解析資料繫結表示式。通過呼叫 databind 方法(它是 system.web.ui.control 類的方法),可以在頁處理期間顯式執行此步驟。可以為單獨的控制項呼叫該方法,或者更為有效的是,可以為page類(也是從control類匯出的)呼叫該方法。此方法級聯對所有子控制項的呼叫,所以通過為該頁呼叫此方法一次,您可以為該頁上的所有控制項呼叫它。
通常在以下情況下呼叫databind方法:
下面的示例說明在頁初始化事件期間呼叫databind方法的典型方式:
' visual basic
private sub page_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load
sqldataadapter1.fill(dsauthors1, "authors")
if not (me.ispostback) then
me.databind()
end if
end sub
// c#
private void page_load(object sender, system.eventargs e)
}
模板和資料繫結表示式
幾乎所有的資料繫結控制項都支援模板 template 在顯示資料時,可以用模板來格式化每個資料項的布局和外觀。通過模板,可以使用資料繫結表示式來顯示資料項的值。使用模板 除treeview外 2.0中的資料繫結控制項都支援模板。repeater datalist formview必須使用模板顯示資料...
EL表示式 EL表示式顯示資料
1.基本資料型別與string型別 request.setattribute scores 滿分 request.setattribute a 1 頁面顯示為 滿分2.自定義型別 a 在頁面中要顯示的自定義類成員變數必須要有getter b 如何顯示 建立乙個student類 request.set...
常用web正規表示式
1 郵箱驗證 var reg w w w w w w var email email val if reg.test email 2 密碼採用數字 字母 特殊字元且長度為8 20位 function validatepwd str test str test str return false 3 驗...