Asp.net框架提供了一個靜態方法DataBinder.Eval,能夠計算後期數據綁定表達式的值,並能夠將結果任意格式化爲字符串。DataBinder.Eval是很方便的,他排除了許多開發人員必須做的(經過強制改變值的類型來獲得預期的數據類型)顯式轉換。尤爲是在帶有模板列表的數據綁定控件中,由於常常須要顯式轉換數據行和數據字段,因此它特別有用。
仔細看下面的代碼,整數將被顯示爲貨幣型字符串。使用標準的asp.net數據綁定語法,爲了獲得數據字段IntegerValue,你必須首先顯式轉換數據行的類型,而後做爲String.Format方法的參數才能獲得結果
web
這樣的語法實在錯綜複雜的難以記憶。比較而言,DataBinder.Eval 就很簡單了。它帶有三個參數:數據項的命名容器、數據字段名稱和格式化字符串。在模板列表如DataList、DataGrid、或 Repeater,命名容器老是Container.DataItem。 Page 是另外一個能夠被DataBinder.Eval使用的命名容器。框架
格式化字符串參數是可選的。若是忽略參數,DataBinder.Eval 返回對象類型的值,就象下面的代碼這樣:
asp.net
很重要的一點須要注意:因爲受後期綁定影響,DataBinder.Eval與標準的數據綁定語法相比,在執行效率上有明顯的差異。所以有選擇地使用DataBinder.Eval,特別是不須要對字符串進行格式化的時候。ui
//顯示二位小數spa
//{0:G}表明顯示True或False.net
//轉換類型orm
{0:d} 日期只顯示年月日server
{0:yyyy-mm-dd} 按格式顯示年月日對象
{0:c} 貨幣樣式blog
讀取數據時如何轉換回車符<%# DataBinder.Eval(Container.DataItem, "User_Content")%>
轉換類型
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
-------------------------------------------------
1、DataBinder.Eval的基本格式 在綁定數據時常常會用到這個句程序:或者 今天又學到一種,並且微軟也說這種方法的效率要比以上兩種高。 頗有用的,這樣能夠在前臺頁面作好多事情了。 還要記住要這樣用必需要在前臺頁面導入名稱空間System.Data,不然會生成錯誤信息。 這種用法其實和是一個道理。 Text='' 這樣的方法是最快的 Text='' 也能夠綁定方法,但方法要是public的 Text='' 還能夠鏈接多個字段 關鍵是Container這個東西,它比較神祕。它的名稱空間是System.ComponentModel。對於它我還須要進一步理解。 2、DataBinder.Eval實現判斷選擇 cs裏定義DGFormatSex方法 protected string DGFormatSex(string xb) { if(xb == "1") return "男"; else return "女"; } DataBinder.Eval用法範例 DataBinder.Eval用法範例 //顯示二位小數 // //{0:G}表明顯示True或False // // // //轉換類型 ((string)DataBinder.Eval(Container, "DataItem.P_SHIP_TIME_SBM8")).Substring(4,4) {0:d} 日期只顯示年月日 {0:yyyy-mm-dd} 按格式顯示年月日 {0:c} 貨幣樣式