[ASP.NET]DataBinder.Eval用法,文本绑定
| <%# Bind("Subject") %> //綁定字段 <%# Container.DataItemIndex + 1%> //實現自動編號 <%# DataBinder.Eval(Container.DataItem, "[n]") %> 通常使用的方法 <%# DataBinder.Eval(Container.DataItem, "ColumnName") %> <%# DataBinder.Eval(Container.DataItem, "ColumnName", null) %> <%# DataBinder.Eval(Container, "DataItem.ColumnName", null) %> 其他用法 <%# ((DataRowView)Container.DataItem)["ColumnName"] %> <%# ((DataRowView)Container.DataItem).Row["ColumnName"] %> <%# ((DataRowView)Container.DataItem)["adtitle"] %> <%# ((DataRowView)Container.DataItem)[n] %> <%# ((DbDataRecord)Container.DataItem)[0] %> <%# (((自定義類型)Container.DataItem)).屬性.ToString() %>//如果屬性為字符串類型就不用ToString()了 DataBinder.Eval用法范例 <%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %> 格式化字符串參數是可選的。如果忽略參數,DataBinder.Eval 返回對象類型的值, //顯示二位小數 <%# DataBinder.Eval(Container.DataItem, "UnitPrice", "${0:F2}") %> //{0:G}代表顯示True或False <ItemTemplate> <asp:Image Width="12" Height="12" Border="0" runat="server" AlternateText='<%# DataBinder.Eval(Container.DataItem, "Discontinued", "{0:G}") %>' ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Discontinued", "~/images/{0:G}.gif") %>' /> </ItemTemplate> //轉換類型 ((string)DataBinder.Eval(Container, "DataItem.P_SHIP_TIME_SBM8")).Substring(4,4) {0:d} 日期只顯示年月日 {0:yyyy-mm-dd} 按格式顯示年月日 {0:c} 貨幣樣式 <%#Container.DataItem("price","{0:¥#,##0.00}")%> <%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%> Specifier Type????? Format??? Output (Passed Double 1.42)?? Output (Passed Int -12400) c?? Currency???????? {0:c}????? $1.42????? -$12,400 d?? Decimal????????? {0:d}???? System.FormatException?? -12400 e?? Scientific?????? {0:e}???? 1.420000e+000???? -1.240000e+004 f?? Fixed point????? {0:f}?? 1.42???? -12400.00 g?? General????????? {0:g}?? 1.42????? -12400 n?? Number with commas for thousands?? {0:n}?? 1.42????? -12,400 r?? Round trippable???? {0:r}?? 1.42????? System.FormatException x?? Hexadecimal???? {0:x4}?? System.FormatException??? cf90 {0:d} 日期只顯示年月日 {0:yyyy-mm-dd} 按格式顯示年月日 樣式取決于 Web.config 中的設置 {0:c}?? 或 {0:£0,000.00} 貨幣樣式?? 標準英國貨幣樣式 <system.web> ??????<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-US" uiCulture="en-US" /> </system.web> 顯示為 £3,000.10 {0:c}?? 或 string.Format("{0:C}", price); 中國貨幣樣式 <system.web> ??????<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-cn" uiCulture="zh-cn" /> </system.web> 顯示為 ¥3,000.10 {0:c}?? 或 string.Format("{0:C}", price); 美國貨幣樣式 <system.web> ??????<globalization requestEncoding="utf-8" responseEncoding="utf-8" /> </system.web> 顯示為 $3,000.10 DataBinder.Eval(Container.DataItem,"Name")和Container.DataItem("Name")有什么區別? DataBinder是System.Web里面的一個靜態類,它提供了Eval方法用于簡化數據綁定表達式的編寫,但是它使用的方式 是通過Reflection等開銷比較大的方法來達到易用性,因此其性能并不是最好的。而Container則根本不是任何一個靜態的對象或方法,它是 ASP.NET頁面編譯器在數據綁定事件處理程序內部聲明的局部變量,其類型是可以進行數據綁定的控件的數據容器類型(如在Repeater內部的數據綁 定容器叫RepeaterItem),在這些容器類中基本都有DataItem屬性,因此你可以寫Container.DataItem,這個屬性返回的 是你正在被綁定的數據源中的那個數據項。如果你的數據源是DataTable,則這個數據項的類型實際是DataRowView。 用DataBinder.eval 綁定不必關心數據來源(Dataread或dataset)。不必關心數據的類型eval會把這個數據對象轉換為一個字符串。在底層綁定做了很多工作,使 用了反射性能。正因為使用方便了,但卻影響了數據性能。當于dataset綁定時,DataItem其實式一個DataRowView(如果綁定的是一個 數據讀取器(dataread)它就是一個IdataRecord。)因此直接轉換成DataRowView的話,將會給性能帶來很大提升。 //正常情況(C#) <%# ((System.Data.DataRowView)Container.DataItem)["Title"] %> //綁定日期字段格式字符串 <%# Convert.ToDateTime(((System.Data.DataRowView)Container.DataItem) ["FbTime"]).ToString("yyyy年MM月dd日") %> <%# DataBinder.Eval(Container, "DataItem.FbTime","{0:yyyy年MM月dd日}") %> //字符串綁定超過指定長度截斷 <%# DataBinder.Eval(Container.DataItem, "Text").ToString().Trim().Length>7? DataBinder.Eval(Container.DataItem, "Text").ToString().Trim().Substring (0,7):DataBinder.Eval(Container.DataItem, "Text").ToString().Trim() %> //價格格試化為2位小數 <%# Convert.ToDecimal(((System.Data.DataRowView)Container.DataItem) ["Price"]).ToString("F2") %> <%# DataBinder.Eval(Container, "DataItem.Price","{0:F2}") %> 'VB.net中價格格式化后判斷 <%# IIf(DataBinder.Eval(Container.DataItem, "price","{0:F2}")="0.00","面議",DataBinder.Eval(Container.DataItem, "price","{0:F2}")+"萬") %> 'Vb.net常規 <%# Ctype(Container.DataItem,DataRowView).Row("Title") %> 靈活的運用數據綁定操作 ??????? 若數組里里放的是對象則可能要進行必要的轉換后再綁定如: ??????? 綁定到DataView,DataTable,DataSet: ??????? 綁定到DataReader: ??????? 當然為了方便一般使用最多的就是DataBinder類的Eval方法了.不過這樣對于同時要綁定大量的數據效率要低一些 在綁定數據時經常會用到這個句程序:<%# DataBinder.Eval(Container.DataItem,"xxxx")%>或者<%# DataBinder.Eval(Container,"DataItem.xxxx")%>今天又學到一種,而且微軟也說這種方法的效率要比以上兩種高。 <%# ((DataRowView)Container.DataItem)["xxxx"]%> 很有用的,這樣可以在前臺頁面做好多事情了。 還要記住要這樣用必須要在前臺頁面導入名稱空間System.Data,否則會生成錯誤信息。 <%@ Import namespace="System.Data" %> 這種用法其實和<%# ((DictionaryEntry)Container.DataItem).Key%>是一個道理。 綁定到DataSet、DataTable時: <%#((System.Data.DataRowView)Container.DataItem)["字段名"]%> 綁定到DataReader時: 關鍵是Container這個東西,它比較神秘。它的名稱空間是System.ComponentModel。對于它我還需要進一步理解。?? 初學.NET,現在在看DataGrid控件,在ItemTemplate顯示數據時, |
轉載于:https://www.cnblogs.com/lel1447/archive/2008/09/20/1294643.html
總結
以上是生活随笔為你收集整理的[ASP.NET]DataBinder.Eval用法,文本绑定的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kali系统下的安卓逆向环境搭建
- 下一篇: 翻木块