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