Bind和Eval的区别详解(ZT)
生活随笔
收集整理的這篇文章主要介紹了
Bind和Eval的区别详解(ZT)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
eval()方法在運行時使用反射執行后期綁定計算,因此與標準的ASP.NET數據綁定方法bind相比,會導致性能明顯下降。它一般用在綁定時需要格式化字符串的情況下。多數情況盡量少用此方法
Eval?方法是靜態(只讀)方法,該方法采用數據字段的值作為參數并將其作為字符串返回。Bind?方法支持讀/寫功能,可以檢索數據綁定控件的值并將任何更改提交回數據庫。
使用?Eval?方法
Eval?方法可計算數據綁定控件(如?GridView、DetailsView?和?FormView?控件)的模板中的后期綁定數據表達式。在運行時,Eval?方法調用?DataBinder?對象的?Eval?方法,同時引用命名容器的當前數據項。命名容器通常是包含完整記錄的數據綁定控件的最小組成部分,如?GridView?控件中的一行。因此,只能對數據綁定控件的模板內的綁定使用?Eval?方法。
Eval?方法以數據字段的名稱作為參數,從數據源的當前記錄返回一個包含該字段值的字符串。可以提供第二個參數來指定返回字符串的格式,該參數為可選參數。字符串格式參數使用為?String?類的?Format?方法定義的語法。
使用?Bind?方法
Bind?方法與?Eval?方法有一些相似之處,但也存在很大的差異。雖然可以像使用?Eval?方法一樣使用?Bind?方法來檢索數據綁定字段的值,但當數據可以被修改時,還是要使用?Bind?方法。?
在?ASP.NET?中,數據綁定控件(如?GridView、DetailsView?和?FormView?控件)可自動使用數據源控件的更新、刪除和插入操作。例如,如果已為數據源控件定義了?SQL?Select、Insert、Delete?和?Update?語句,則通過使用?GridView、DetailsView?或?FormView?控件模板中的?Bind?方法,就可以使控件從模板中的子控件中提取值,并將這些值傳遞給數據源控件。然后數據源控件將執行適當的數據庫命令。出于這個原因,在數據綁定控件的?EditItemTemplate?或?InsertItemTemplate?中要使用?Bind?函數。
Bind?方法通常與輸入控件一起使用,例如由編輯模式中的?GridView?行所呈現的?TextBox?控件。當數據綁定控件將這些輸入控件作為自身呈現的一部分創建時,該方法便可提取輸入值。?
Bind?方法采用數據字段的名稱作為參數,從而與綁定屬性關聯,如下面的示例所示: <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?按鈕時,使用?Bind?語法綁定的每個控件屬性值都會被提取出來,并傳遞給數據源控件以執行更新操作。
使用?DataBinder.Eval
ASP.NET?提供了一個名為?DataBinder.Eval?的靜態方法,該方法計算后期綁定的數據綁定表達式,并將結果格式化為字符串(可選)。利用此方法,可以避免許多在將值強制為所需數據類型時必須執行的顯式強制轉換操作。
例如,在下面的代碼片段中,一個整數顯示為貨幣字符串。使用標準的?ASP.NET?數據綁定語法,必須首先強制轉換數據行的類型以便檢索數據字段?Integervalue。然后,這將作為參數傳遞到?String.Format?方法:?
<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["Integervalue"]) %>?
將此語法與?DataBinder.Eval?的語法進行比較,后者只有三個參數:數據項的命名容器、數據字段名稱和格式字符串。在模板化列表中(如?DataList?類、DataGrid?類或?Repeater?類),命名容器始終是?Container.DataItem。?
<%# DataBinder.Eval(Container.DataItem, "Integervalue", "{0:c}") %>
?
格式字符串參數是可選的。如果它被忽略,DataBinder.Eval?將返回類型對象的值,如下面的示例所示:
<%# (bool)DataBinder.Eval(Container.DataItem, "Boolvalue") %>?
當對模板化列表中的控件進行數據綁定時,DataBinder.Eval?特別有用,因為數據行和數據字段通常都必須強制轉換。
文章引用自:http://blog.nnsky.com/blog_view_178492.html?page=2
Eval?方法是靜態(只讀)方法,該方法采用數據字段的值作為參數并將其作為字符串返回。Bind?方法支持讀/寫功能,可以檢索數據綁定控件的值并將任何更改提交回數據庫。
使用?Eval?方法
Eval?方法可計算數據綁定控件(如?GridView、DetailsView?和?FormView?控件)的模板中的后期綁定數據表達式。在運行時,Eval?方法調用?DataBinder?對象的?Eval?方法,同時引用命名容器的當前數據項。命名容器通常是包含完整記錄的數據綁定控件的最小組成部分,如?GridView?控件中的一行。因此,只能對數據綁定控件的模板內的綁定使用?Eval?方法。
Eval?方法以數據字段的名稱作為參數,從數據源的當前記錄返回一個包含該字段值的字符串。可以提供第二個參數來指定返回字符串的格式,該參數為可選參數。字符串格式參數使用為?String?類的?Format?方法定義的語法。
使用?Bind?方法
Bind?方法與?Eval?方法有一些相似之處,但也存在很大的差異。雖然可以像使用?Eval?方法一樣使用?Bind?方法來檢索數據綁定字段的值,但當數據可以被修改時,還是要使用?Bind?方法。?
在?ASP.NET?中,數據綁定控件(如?GridView、DetailsView?和?FormView?控件)可自動使用數據源控件的更新、刪除和插入操作。例如,如果已為數據源控件定義了?SQL?Select、Insert、Delete?和?Update?語句,則通過使用?GridView、DetailsView?或?FormView?控件模板中的?Bind?方法,就可以使控件從模板中的子控件中提取值,并將這些值傳遞給數據源控件。然后數據源控件將執行適當的數據庫命令。出于這個原因,在數據綁定控件的?EditItemTemplate?或?InsertItemTemplate?中要使用?Bind?函數。
Bind?方法通常與輸入控件一起使用,例如由編輯模式中的?GridView?行所呈現的?TextBox?控件。當數據綁定控件將這些輸入控件作為自身呈現的一部分創建時,該方法便可提取輸入值。?
Bind?方法采用數據字段的名稱作為參數,從而與綁定屬性關聯,如下面的示例所示: <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?按鈕時,使用?Bind?語法綁定的每個控件屬性值都會被提取出來,并傳遞給數據源控件以執行更新操作。
使用?DataBinder.Eval
ASP.NET?提供了一個名為?DataBinder.Eval?的靜態方法,該方法計算后期綁定的數據綁定表達式,并將結果格式化為字符串(可選)。利用此方法,可以避免許多在將值強制為所需數據類型時必須執行的顯式強制轉換操作。
例如,在下面的代碼片段中,一個整數顯示為貨幣字符串。使用標準的?ASP.NET?數據綁定語法,必須首先強制轉換數據行的類型以便檢索數據字段?Integervalue。然后,這將作為參數傳遞到?String.Format?方法:?
<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["Integervalue"]) %>?
將此語法與?DataBinder.Eval?的語法進行比較,后者只有三個參數:數據項的命名容器、數據字段名稱和格式字符串。在模板化列表中(如?DataList?類、DataGrid?類或?Repeater?類),命名容器始終是?Container.DataItem。?
<%# DataBinder.Eval(Container.DataItem, "Integervalue", "{0:c}") %>
?
格式字符串參數是可選的。如果它被忽略,DataBinder.Eval?將返回類型對象的值,如下面的示例所示:
<%# (bool)DataBinder.Eval(Container.DataItem, "Boolvalue") %>?
當對模板化列表中的控件進行數據綁定時,DataBinder.Eval?特別有用,因為數據行和數據字段通常都必須強制轉換。
文章引用自:http://blog.nnsky.com/blog_view_178492.html?page=2
轉載于:https://www.cnblogs.com/wbcms/archive/2007/12/27/1017448.html
總結
以上是生活随笔為你收集整理的Bind和Eval的区别详解(ZT)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汽车展览的文化元素有哪些?
- 下一篇: 昆明到曲靖可以在哪几个客运站坐汽车?