首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

GridView 欄位格式化完整速查表:數字、貨幣、百分比、日期時間

     編輯:關於ASP.NET

在 GridView、DetailsView、FormView 等資料繫結控制項中,透過 DataFormatString 屬性配合 HtmlEncode="false" 可靈活控制欄位顯示格式。本文整理常用格式字串對照表,並說明套用方式與注意事項。

格式字串速查表

類型格式字串範例輸出說明
數字{0:N2}1,234.56千分位分隔,2 位小數
{0:N0}1,235千分位分隔,無小數(四捨五入)
貨幣{0:C2}$1,234.56依系統文化特性顯示貨幣符號(en-US 為 $)
{0:C4}$1,234.56004 位小數
{0:C}$1,234.56預設 2 位小數
"NT$ {0:N2}"NT$ 1,234.56自訂貨幣符號(繁體中文環境建議)
科學記號{0:E2}1.23E+003指數部分 2 位數
百分比{0:P2}12.35%值乘 100 加 %,2 位小數
日期時間{0:d}2024/01/15短日期格式(文化特性相關)
{0:D}2024年1月15日長日期格式
{0:t}下午 3:30短時間格式
{0:T}下午 3:30:45長時間格式(含秒)
{0:f}2024年1月15日 下午 3:30完整日期時間(短時間)
{0:F}2024年1月15日 下午 3:30:45完整日期時間(長時間)
{0:yyyy/MM/dd}2024/01/15自訂格式:年/月/日
{0:yyyy-MM-dd HH:mm:ss}2024-01-15 15:30:45自訂格式:ISO 8601 風格
{0:MM/dd/yyyy hh:mm tt}01/15/2024 03:30 PM美式 12 小時制

GridView 套用範例

BoundField 宣告式設定

<asp:GridView ID="gvProducts" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField DataField="UnitPrice" HeaderText="單價" 
            DataFormatString="{0:C2}" HtmlEncode="false" />
        <asp:BoundField DataField="UnitsInStock" HeaderText="庫存" 
            DataFormatString="{0:N0}" HtmlEncode="false" />
        <asp:BoundField DataField="DiscontinuedDate" HeaderText="停產日期" 
            DataFormatString="{0:yyyy/MM/dd}" HtmlEncode="false" 
            NullDisplayText="--" />
    </Columns>
</asp:GridView>

TemplateField 靈活控制

<asp:TemplateField HeaderText="總額">
    <ItemTemplate>
        <%# Eval("UnitPrice", "{0:C2}") * Eval("Quantity", "{0:N0}") %>
    </ItemTemplate>
</asp:TemplateField>

程式碼後置動態設定

protected void gvProducts_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // 找到特定欄位儲存格套用格式
        e.Row.Cells[2].Text = Convert.ToDecimal(e.Row.Cells[2].Text).ToString("C2");
    }
}

關鍵屬性說明

屬性必要性說明
DataFormatString必要格式字串,需包含 {0 佔位符
HtmlEncode必要設為 false 才會套用格式;預設 true 會 HTML 編碼導致格式失效
NullDisplayText選用資料為 NULL 時顯示文字(如 --、N/A)
ApplyFormatInEditMode選用true 時編輯模式也套用格式(預設 false)

文化特性與全球化

格式輸出受 Thread.CurrentThread.CurrentCulture 影響。繁體中文環境(zh-TW)預設:

  • 貨幣符號:NT$
  • 日期分隔符:/
  • 小數點:.
  • 千分位:,

可在 Web.config 統一設定:

<system.web>
  <globalization culture="zh-TW" uiCulture="zh-TW" />
</system.web>

常見問題排查

  • 格式不生效:確認 HtmlEncode="false"、資料型別正確(數值型別而非字串)。
  • 貨幣符號錯誤:檢查伺服器文化特性或明確指定 "NT$ {0:N2}"。
  • 日期顯示 1970/01/01:資料庫 DateTime.MinValue 或 NULL,使用 NullDisplayText 或 Convert.ToDateTime 判斷。
  • 匯出 Excel 格式遺失:匯出時需重新套用格式或使用 ClosedXML/EPPlus 設定儲存格格式。

結語

熟練掌握 DataFormatString 格式字串,能讓資料呈現更專業、符合業務習慣。建議建立專案共用的格式常數類別(如 DisplayFormats.Currency),統一維護、減少魔術字串。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved