日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Bind和Eval的区别详解(ZT)

發(fā)布時(shí)間:2025/4/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Bind和Eval的区别详解(ZT) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
eval()方法在運(yùn)行時(shí)使用反射執(zhí)行后期綁定計(jì)算,因此與標(biāo)準(zhǔn)的ASP.NET數(shù)據(jù)綁定方法bind相比,會(huì)導(dǎo)致性能明顯下降。它一般用在綁定時(shí)需要格式化字符串的情況下。多數(shù)情況盡量少用此方法


Eval?方法是靜態(tài)(只讀)方法,該方法采用數(shù)據(jù)字段的值作為參數(shù)并將其作為字符串返回。Bind?方法支持讀/寫(xiě)功能,可以檢索數(shù)據(jù)綁定控件的值并將任何更改提交回?cái)?shù)據(jù)庫(kù)。

使用?Eval?方法
Eval?方法可計(jì)算數(shù)據(jù)綁定控件(如?GridView、DetailsView?和?FormView?控件)的模板中的后期綁定數(shù)據(jù)表達(dá)式。在運(yùn)行時(shí),Eval?方法調(diào)用?DataBinder?對(duì)象的?Eval?方法,同時(shí)引用命名容器的當(dāng)前數(shù)據(jù)項(xiàng)。命名容器通常是包含完整記錄的數(shù)據(jù)綁定控件的最小組成部分,如?GridView?控件中的一行。因此,只能對(duì)數(shù)據(jù)綁定控件的模板內(nèi)的綁定使用?Eval?方法。

Eval?方法以數(shù)據(jù)字段的名稱作為參數(shù),從數(shù)據(jù)源的當(dāng)前記錄返回一個(gè)包含該字段值的字符串。可以提供第二個(gè)參數(shù)來(lái)指定返回字符串的格式,該參數(shù)為可選參數(shù)。字符串格式參數(shù)使用為?String?類的?Format?方法定義的語(yǔ)法。

使用?Bind?方法
Bind?方法與?Eval?方法有一些相似之處,但也存在很大的差異。雖然可以像使用?Eval?方法一樣使用?Bind?方法來(lái)檢索數(shù)據(jù)綁定字段的值,但當(dāng)數(shù)據(jù)可以被修改時(shí),還是要使用?Bind?方法。?

在?ASP.NET?中,數(shù)據(jù)綁定控件(如?GridView、DetailsView?和?FormView?控件)可自動(dòng)使用數(shù)據(jù)源控件的更新、刪除和插入操作。例如,如果已為數(shù)據(jù)源控件定義了?SQL?Select、Insert、Delete?和?Update?語(yǔ)句,則通過(guò)使用?GridView、DetailsView?或?FormView?控件模板中的?Bind?方法,就可以使控件從模板中的子控件中提取值,并將這些值傳遞給數(shù)據(jù)源控件。然后數(shù)據(jù)源控件將執(zhí)行適當(dāng)?shù)臄?shù)據(jù)庫(kù)命令。出于這個(gè)原因,在數(shù)據(jù)綁定控件的?EditItemTemplate?或?InsertItemTemplate?中要使用?Bind?函數(shù)。

Bind?方法通常與輸入控件一起使用,例如由編輯模式中的?GridView?行所呈現(xiàn)的?TextBox?控件。當(dāng)數(shù)據(jù)綁定控件將這些輸入控件作為自身呈現(xiàn)的一部分創(chuàng)建時(shí),該方法便可提取輸入值。?

Bind?方法采用數(shù)據(jù)字段的名稱作為參數(shù),從而與綁定屬性關(guān)聯(lián),如下面的示例所示: <EditItemTemplate>?
??<table>?
????<tr>?
??????<td?align=right>?
????????<b>Employee ID:</b>?
??????</td>?
??????<td>?
????????<%# Eval("EmployeeID") %>?
??????</td>?
????</tr>?
????<tr>?
??????<td?align=right>?
????????<b>First Name:</b>?
??????</td>?
??????<td>?
????????<asp:TextBox?ID="EditFirstNameTextBox"?RunAt="Server"?
??????????Text='<%# Bind("FirstName") %>'?/>?
??????</td>?
????</tr>?
????<tr>?
??????<td?align=right>?
????????<b>Last Name:</b>?
??????</td>?
??????<td>?
????????<asp:TextBox?ID="EditLastNameTextBox"?RunAt="Server"?
????????????Text='<%# Bind("LastName") %>'??/>?
??????</td>?
????</tr>?
????<tr>?
??????<td?colspan="2">?
????????<asp:LinkButton?ID="UpdateButton"?RunAt="server"?
??????????Text="Update"?CommandName="Update"?/>?
??????????
????????<asp:LinkButton?ID="CancelUpdateButton"?RunAt="server"?
??????????Text="Cancel"?CommandName="Cancel"?/>?
??????</td>?
????</tr>?
??</table>?
</EditItemTemplate>

單擊行的?Update?按鈕時(shí),使用?Bind?語(yǔ)法綁定的每個(gè)控件屬性值都會(huì)被提取出來(lái),并傳遞給數(shù)據(jù)源控件以執(zhí)行更新操作。


使用?DataBinder.Eval
ASP.NET?提供了一個(gè)名為?DataBinder.Eval?的靜態(tài)方法,該方法計(jì)算后期綁定的數(shù)據(jù)綁定表達(dá)式,并將結(jié)果格式化為字符串(可選)。利用此方法,可以避免許多在將值強(qiáng)制為所需數(shù)據(jù)類型時(shí)必須執(zhí)行的顯式強(qiáng)制轉(zhuǎn)換操作。

例如,在下面的代碼片段中,一個(gè)整數(shù)顯示為貨幣字符串。使用標(biāo)準(zhǔn)的?ASP.NET?數(shù)據(jù)綁定語(yǔ)法,必須首先強(qiáng)制轉(zhuǎn)換數(shù)據(jù)行的類型以便檢索數(shù)據(jù)字段?Integervalue。然后,這將作為參數(shù)傳遞到?String.Format?方法:?

<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["Integervalue"]) %>?

將此語(yǔ)法與?DataBinder.Eval?的語(yǔ)法進(jìn)行比較,后者只有三個(gè)參數(shù):數(shù)據(jù)項(xiàng)的命名容器、數(shù)據(jù)字段名稱和格式字符串。在模板化列表中(如?DataList?類、DataGrid?類或?Repeater?類),命名容器始終是?Container.DataItem。?

<%# DataBinder.Eval(Container.DataItem, "Integervalue", "{0:c}") %>
?
格式字符串參數(shù)是可選的。如果它被忽略,DataBinder.Eval?將返回類型對(duì)象的值,如下面的示例所示:

<%# (bool)DataBinder.Eval(Container.DataItem, "Boolvalue") %>?

當(dāng)對(duì)模板化列表中的控件進(jìn)行數(shù)據(jù)綁定時(shí),DataBinder.Eval?特別有用,因?yàn)閿?shù)據(jù)行和數(shù)據(jù)字段通常都必須強(qiáng)制轉(zhuǎn)換。



文章引用自:http://blog.nnsky.com/blog_view_178492.html?page=2

轉(zhuǎn)載于:https://www.cnblogs.com/wbcms/archive/2007/12/27/1017448.html

總結(jié)

以上是生活随笔為你收集整理的Bind和Eval的区别详解(ZT)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。