ASP.NET Eval四種綁定方式
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
ASP.NET Eval四種綁定方式: 1、1.x中的數(shù)據(jù)綁定語(yǔ)法 <asp:Literal id="litEval2" runat="server" Text=''<%#DataBinder.Eval(Container.DataItem, "userName")%>'' /> 2、 2.x簡(jiǎn)化Eval數(shù)據(jù)綁定語(yǔ)法 <asp:Literal id="litEval1" runat="server" Text=''<%Eval("userName")%>'' /> 3、第二種方法的方法重載 <a href=''<%# Eval("userId","Default.aspx?id={0}")%>''><%# Eval("userName") %></a> 4、eval同時(shí)綁定兩個(gè)值 <a href=''<%# string.Format("Default.aspx?id={0}&role={1}", Eval("userId"),Eval("userRole"))%>''><%# Eval("userName") %></a> eval_r()方法在運(yùn)行時(shí)使用反射執(zhí)行后期綁定計(jì)算,因此與標(biāo)準(zhǔn)的ASP.NET數(shù)據(jù)綁定方法bind相比,會(huì)導(dǎo)致性能明顯下降。它一般用在綁定時(shí)需要格式化字符串的情況下。多數(shù)情況盡量少用此方法
使用 Eval 方法 Eval 方法以數(shù)據(jù)字段的名稱(chēng)作為參數(shù),從數(shù)據(jù)源的當(dāng)前記錄返回一個(gè)包含該字段值的字符串??梢蕴峁┑诙€(gè)參數(shù)來(lái)指定返回字符串的格式,該參數(shù)為可選參數(shù)。字符串格式參數(shù)使用為 String 類(lèi)的 Format 方法定義的語(yǔ)法。 使用 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ù)字段的名稱(chēng)作為參數(shù),從而與綁定屬性關(guān)聯(lián),如下面的示例所示: <EditItemTemplate> 單擊行的 Update 按鈕時(shí),使用 Bind 語(yǔ)法綁定的每個(gè)控件屬性值都會(huì)被提取出來(lái),并傳遞給數(shù)據(jù)源控件以執(zhí)行更新操作。
例如,在下面的代碼片段中,一個(gè)整數(shù)顯示為貨幣字符串。使用標(biāo)準(zhǔn)的 ASP.NET 數(shù)據(jù)綁定語(yǔ)法,必須首先強(qiáng)制轉(zhuǎn)換數(shù)據(jù)行的類(lèi)型以便檢索數(shù)據(jù)字段 IntegerValue。然后,這將作為參數(shù)傳遞到 String.Format 方法: <%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %>
<%# DataBinder.eval_r(Container.DataItem, "IntegerValue", "{0:c}") %>
比如我們要取個(gè)日期型的數(shù)據(jù),在數(shù)據(jù)庫(kù)中列名是updated,數(shù)值是2008/06/01。但是想2008年06月01日這樣顯示,我們可以這樣來(lái)寫(xiě)B(tài)ind("updated", "{0:yyyy年MM月dd日}"),Eval也是如此。 兩者都能讀取數(shù)據(jù)中的值,并顯示。當(dāng)我們使用編輯更新操作時(shí),Bind能夠自動(dòng)的將修改的值更新到數(shù)據(jù)庫(kù)中,并顯示出修改后的值。但是用了Eval卻只能得到錯(cuò)誤畫(huà)面,新的數(shù)據(jù)沒(méi)有更新到數(shù)據(jù)庫(kù)中。 從這點(diǎn)看來(lái),Bind方法和Eval方法的區(qū)別就是:Bind方法在讀取和更新數(shù)據(jù)這2方面都是可以,但是Eval方法只能讀取顯示數(shù)據(jù)。所以,我們?cè)谶x擇Bind方法和Eval方法的時(shí)候,必須要有爭(zhēng)對(duì)性,當(dāng)數(shù)據(jù)肯定需要更新操作的時(shí)候我們應(yīng)該使用Bind,只是顯示數(shù)據(jù),不會(huì)有任何操作的就可以使用Eval方法。 在更新操作中我們可以在GridView1_RowUpdating事件中操作,例子如下: 如果我們能充分理解Bind方法和Eval方法,其實(shí)也就沒(méi)必要向上面那樣去寫(xiě),都是可以自動(dòng)完成的。上面的方法除了比較復(fù)雜的操作才會(huì)用到,這也是一個(gè)使用技巧。 該文章在 2017/11/16 23:14:09 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |