GridView繫結欄位格式DataFormatString的使用

weixin_34262482發表於2009-08-05

在我們從業務邏輯層獲得資料實體時候,接下來的事情就是要繫結到控制元件中。資料實體中的一些欄位可以直接繫結到介面中,但是有一些欄位需要重新格式化格式。比如貨幣單位欄位,需要顯示貨幣符號和每隔三位顯示分隔符;再比如日期欄位,資料庫中存放的是日期和時間,但是在介面上需要按照XXXX年XX月XX日的格式顯示。這時候我們就用到了DataFormatString屬性。

<asp:GridView ID="grvResult" runat="server" AutoGenerateColumns="False" Width="100%">

<Columns>

<asp:BoundField HeaderText="預定日期" DataField="OperationDate" DataFormatString="{0:yyyy-MM-dd}" HtmlEncode="False">

</asp:BoundField>

<asp:BoundField HeaderText="訂單總計" DataField="TotalRate" DataFormatString="{0:C}" HtmlEncode="False">

</asp:BoundField>

</Columns>

</asp:GridView>

例如上面的程式碼展示了日期和貨幣兩種繫結方式。DataFormatString中的{0}是固定的格式,這和String.Fromat(“{0}”, someString)中的{0}是一個用法,表示繫結上下文的引數索引編號。然後,在後面加入格式化字串,具體的使用方法可以參考MSDN。

這裡需要注意以下幾點
1:在GridView中的asp:BoundField使用DataFormatString必須設定屬性HtmlEncode="False",否則不起作用。

2:如果需要使用日期型別的格式化字串,必須資料實體中對應的欄位也應該日起型別的。

3:格式化字串C代表貨幣單位,需要繫結的資料型別應該是數字型別的。如果是字串型別的不起作用,需要手動新增格式化字串為DataFormatString="¥{0:C}"。

使用 DataFormatString 屬性來提供列中各項的自定義格式。

獲取或設定指定列中各項的顯示格式的字串。指定列中各項的顯示格式的格式化字串,預設值為 String.Empty。

資料格式字串由以冒號分隔的兩部分組成,形式為 { A : Bxx }。例如,格式化字串 {0:F2} 將顯示帶兩位小數的定點數。

整個字串必須放在大括號內,表示它是格式字串,而不是實際字串。大括號外的任何文字均顯示為實際文字。

冒號前的值指定在從零開始的引數列表中的引數索引。值只能設定為 0,因為每個單元格中只有一個值。

冒號後的字元指定值的顯示格式。下表列出了一些常用格式。

格式字元 說明
C 以貨幣格式顯示數值。
D 以十進位制格式顯示數值。
E 以科學記數法(指數)格式顯示數值。
F 以固定格式顯示數值。
G 以常規格式顯示數值。
N 以數字格式顯示數值。
X 以十六進位制格式顯示數值。

MSDN示例:

<asp:BoundColumn HeaderText="Item" DataField="Item" ReadOnly="True" /> <asp:BoundColumn HeaderText="Quantity" DataField="Qty" DataFormatString="{0:N0}"/> <asp:BoundColumn HeaderText="Price" DataField="Price" DataFormatString="{0:c}" /> <asp:BoundColumn HeaderText="Weight" DataField="Weight" ReadOnly="True" DataFormatString="{0:F3}" /> <asp:BoundColumn HeaderText="Expires" DataField="Expires" ReadOnly="True" DataFormatString="{0:g}" />

格式日期:DataFormatString="{0: yyyy-MM-dd}"

格式時間:DataFormatString="{0: hh:mm:ss}"

說明:大寫的M是 Month,小寫的m是minute ,注意區別大小寫,C#裡其它時候了是這樣的用法,要區別大小寫。

格式字串 輸入 結果
"{0:C}" 12345.6789 $12,345.68
"{0:C}" -12345.6789 ($12,345.68)
"{0:D}" 12345 12345
"{0:D8}" 12345 00012345
"{0:E}" 12345.6789 1234568E+004
"{0:E10}" 12345.6789 1.2345678900E+004
"{0:F}" 12345.6789 12345.68
"{0:F0}" 12345.6789 12346
"{0:G}" 12345.6789 12345.6789
"{0:G7}" 123456789 1.234568E8
"{0:N}" 12345.6789 12,345.68
"{0:N4}" 123456789 123,456,789.0000
"Total: {0:C}" 12345.6789 Total: $12345.68
常用的日期格式如下表所示:
格式 說明 輸出格式
d 精簡日期格式 MM/dd/yyyy
D 詳細日期格式 dddd, MMMM dd, yyyy
f 完整格式 (long date + short time) dddd, MMMM dd, yyyy HH:mm
F 完整日期時間格式 (long date + long time) dddd, MMMM dd, yyyy HH:mm:ss
g 一般格式 (short date + short time) MM/dd/yyyy HH:mm
G 一般格式 (short date + long time) MM/dd/yyyy HH:mm:ss
m,M 月日格式 MMMM dd
s 適中日期時間格式 yyyy-MM-dd HH:mm:ss
t 精簡時間格式 HH:mm
T 詳細時間格式 HH:mm:ss

http://hi.baidu.com/air_net/blog/item/16b22280a00574dfbc3e1e41.html

http://www.lan27.com/Article/200711/5783.htm

相關文章