ASP.NET立即上手教程(8)_.Net教程
推薦:ASP.NET立即上手教程(6)表單驗證服務器控件 驗證介紹 網絡形成框架包括一套易用而功能強大的用于驗證的服務器控件,用來檢查輸入表單的錯誤,并且在必要的時候,向用戶顯示提示信息。將驗證控件添加到設計圈套表格
Asp.net引入了一種新的聲明數據綁定的語法。這種極其靈活的語法允許開發者不僅綁定數據源,而且可以綁定簡單的屬性、集合、表達式、甚至是調用方法所返回的結果。下面的列表顯示了這種新語法的一些例子:
簡單屬性
Customer: <%# custID %>
集合
Orders: <asp:ListBox id="List1" datasource='<%#
myArray %>' runat="server">
表達式
Contact: <%# ( customer.First Name " " customer.LastName
) %>
方法結果
Outstanding Balance: <%# GetBalance(custID) %>
盡管這種語法看上去和asp中Response.Write的簡寫方式<%= %>很類似,但他們的運行機理卻大不相同。Response.Write的簡寫語法在頁面處理的時候求值,而asp.net數據綁定語法只有當調用DataBind方法的時候才求值。
DataBind是Page和所有服務器控件的一個方法。當你對一個父控件調用DataBind方法的時候,他所包含的子控件都會調用DataBind方法。比如執行DataList1.DataBind(),DataList模板中的所有控件都引用了DataBind方法。在Page調用DataBind方法--- Page.DataBind()或者簡單的DataBind() ---導致頁面上所有的數據綁定表達式都會被求值。DataBind經常在Page_Load事件中被調用,比如下面的例子:
protected void Page_Load(Object Src, EventArgs E) {
DataBind();
}
你幾乎可以在.aspx頁面中聲明部分的任何地方使用數據綁定表達式,在運行時提供它所計算的預期的數據類型。當求值以后,簡單的屬性、表達式以及上例中的方法,將向用戶顯示文本。在這些情況下,數據綁定表達式必須求出一個string類型的值。在集合的例子中,數據綁定表達式所求值的類型,對于ListBox的DataSource 屬性來說是有效的。你會發現,在數據綁定表達式中為了得到期望的結果,強制轉換結果值的類型,是很有必要的。例如,如果count是一個整數:
Number of Records: <%# count.ToString() %>
綁定簡單屬性
Asp.net數據綁定語法支持綁定頁面的公共變量和屬性,以及頁面上其他控件的屬性。
下面的例子說明了綁定到頁面的公共變量和簡單屬性。注意這些值在調用DataBind()之前已被初始化。
綁定集合和列表
列表服務器控件,如DataGrid、 ListBox 和 HTMLSelect,使用集合作為數據源。下面的例子說明綁定到常用的CLR 集合類型。這些控件只能綁定到支持IEnumerable, ICollection, 或 IListSource 接口的集合。通常,您可以綁定到ArrayList、 Hashtable、 DataView 和DataReader.
很多時候,在綁定到頁面或控制之前,你可能會操作這些數據。
DataBinder.Eval方法
Asp.net框架提供了一個靜態方法DataBinder.Eval,可以計算后期數據綁定表達式的值,并可以將結果任意格式化為字符串。DataBinder.Eval是很方便的,他排除了許多開發人員必須作的(通過強制改變值的類型來得到預期的數據類型)顯式轉換。尤其是在帶有模板列表的數據綁定控件中,因為經常需要顯式轉換數據行和數據字段,所以它特別有用。
仔細看下面的代碼,整數將被顯示為貨幣型字符串。使用標準的asp.net數據綁定語法,為了得到數據字段IntegerValue,你必須首先顯式轉換數據行的類型,然后作為String.Format方法的參數才能得到結果
<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %>
這樣的語法實在錯綜復雜的難以記憶。比較而言,DataBinder.Eval 就很簡單了。它帶有三個參數:數據項的命名容器、數據字段名稱和格式化字符串。 在模板列表如DataList、DataGrid、或 Repeater,命名容器總是Container.DataItem。 Page 是另一個可以被DataBinder.Eval使用的命名容器。
<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>
格式化字符串參數是可選的。如果忽略參數,DataBinder.Eval 返回對象類型的值,就象下面的代碼這樣:
<%# (bool)DataBinder.Eval(Container.DataItem, "BoolValue") %>
很重要的一點需要注意:由于受后期綁定影響,DataBinder.Eval與標準的數據綁定語法相比,在執行效率上有明顯的差別。因此有選擇地使用DataBinder.Eval,特別是不需要對字符串進行格式化的時候。
分享:ASP.NET立即上手教程(5)應用樣式到HTML服務器控件 WEB是一個靈活的用戶接口環境,不同的站點在視覺和感覺上極盡變化之能事。層疊式樣式表(CSS)的廣泛應用,極大的豐富了WEB的設計。所有ASP.NET的HTML服務器控件和W
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發送Email實例(可帶附件)
- js實現廣告漂浮效果的小例子
- asp.net Repeater 數據綁定的具體實現
- Asp.Net 無刷新文件上傳并顯示進度條的實現方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數據庫(連接字符串的配置及獲取)
- asp.net頁面傳值測試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現分頁示例代碼
- 相關鏈接:
- 教程說明:
.Net教程-ASP.NET立即上手教程(8)。