public string Two(object old)
{
  decimal d = decimal.Parse(old.ToString());
  return decimal.Round( d,2 ).ToString(); 
}<asp:TemplateColumn HeaderText="两位小数">
<ItemTemplate>
<%# Two(DataBinder.Eval(Container, "DataItem.value")) %>
</ItemTemplate>
</asp:TemplateColumn>

解决方案 »

  1.   

    使用 DataFormatString 属性来提供列中各项的自定义格式。数据格式字符串由以冒号分隔的两部分组成,形式为 {A:Bxx}。例如,格式化字符串 {0:D2} 将单元格格式化为显示一个包含两个小数位数的数字。注意   整个字符串必须放在大括号内,表示它是格式字符串,而不是原义字符串。大括号外的任何文本均显示为原义文本。
    冒号前的值(常规示例中为 A)指定在从零开始的参数列表中的参数索引。注意   此值只能设置为 0,因为每个单元格中只有一个值。
    冒号后的字符(一般示例中为 B)指定值的显示格式。下表列出了一些常用格式。格式字符 说明 
    C  以货币格式显示数值。 
    D  以十进制格式显示数值。 
    E  以科学记数法(指数)格式显示数值。 
    F  以固定格式显示数值。 
    G  以常规格式显示数值。 
    N  以数字格式显示数值。 
    X  以十六进制格式显示数值。 注意   除 X 以指定的大小写形式显示十六进制字符之外,其他格式字符不区分大小写。
    格式字符后的值(一般示例中为 xx)指定显示的值的有效位数或小数位数。有关格式化字符串的更多信息,请参阅格式设置概述。示例
    [Visual Basic, C#, JScript] 下面的示例展示如何使用 DataFormatString 属性来为在 DataGrid 控件中显示价格的列指定货币格式。[Visual Basic] 
    <%@ Import Namespace="System.Data" %>
     
    <html>
       <script language="VB" runat="server">
       Function CreateDataSource() As ICollection
           Dim dt As New DataTable()
           Dim dr As DataRow
           
           dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32)))
           dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
           dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double)))
           
           Dim i As Integer
           For i = 0 To 8
               dr = dt.NewRow()
               
               dr(0) = i
               dr(1) = "Item " + i.ToString()
               dr(2) = 1.23 *(i + 1)
               
               dt.Rows.Add(dr)
           Next i
           
           Dim dv As New DataView(dt)
           Return dv
       End Function 'CreateDataSource
       Sub Page_Load(sender As Object, e As EventArgs)
           
           If Not IsPostBack Then
               ' Load this data only once.
               ItemsGrid.DataSource = CreateDataSource()
               ItemsGrid.DataBind()
           End If
       End Sub 'Page_Load
       </script>
    <body>
     
       <form runat=server>
     
          <h3>BoundColumn Example</h3>
     
          <b>Product List</b>
     
          <asp:DataGrid id="ItemsGrid"
               BorderColor="black"
               BorderWidth="1"
               CellPadding="3"
               AutoGenerateColumns="false"
               runat="server">         <HeaderStyle BackColor="#00aaaa">
             </HeaderStyle>         <Columns>            <asp:BoundColumn
                     HeaderText="Number" 
                     DataField="IntegerValue">
                </asp:BoundColumn>            <asp:BoundColumn
                     HeaderText="Description" 
                     DataField="StringValue">
                </asp:BoundColumn>            <asp:BoundColumn
                     HeaderText="Price" 
                     DataField="CurrencyValue" 
                     DataFormatString="{0:c}">
                </asp:BoundColumn>         </Columns>
     
          </asp:DataGrid>
     
       </form>
     
    </body>
    </html>
    [C#] 
    <%@ Import Namespace="System.Data" %>
     
    <html>
       <script language="C#" runat="server">
     
          ICollection CreateDataSource() 
          {
             DataTable dt = new DataTable();
             DataRow dr;
     
             dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
             dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
             dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
     
             for (int i = 0; i < 9; i++) 
             {
                dr = dt.NewRow();
     
                dr[0] = i;
                dr[1] = "Item " + i.ToString();
                dr[2] = 1.23 * (i + 1);
     
                dt.Rows.Add(dr);
             }
     
             DataView dv = new DataView(dt);
             return dv;
          }
     
          void Page_Load(Object sender, EventArgs e) 
          {
     
             if (!IsPostBack) 
             {
                // Load this data only once.
                ItemsGrid.DataSource= CreateDataSource();
                ItemsGrid.DataBind();
             }
          }
     
       </script>
     
    <body>
     
       <form runat=server>
     
          <h3>BoundColumn Example</h3>
     
          <b>Product List</b>
     
          <asp:DataGrid id="ItemsGrid"
               BorderColor="black"
               BorderWidth="1"
               CellPadding="3"
               AutoGenerateColumns="false"
               runat="server">         <HeaderStyle BackColor="#00aaaa">
             </HeaderStyle>         <Columns>            <asp:BoundColumn
                     HeaderText="Number" 
                     DataField="IntegerValue">
                </asp:BoundColumn>            <asp:BoundColumn
                     HeaderText="Description" 
                     DataField="StringValue">
                </asp:BoundColumn>            <asp:BoundColumn
                     HeaderText="Price" 
                     DataField="CurrencyValue" 
                     DataFormatString="{0:c}">
                </asp:BoundColumn>         </Columns>
     
          </asp:DataGrid>
     
       </form>
     
    </body>
    </html>
    [JScript] 
    <%@ Import Namespace="System.Data" %>
     
    <html>
       <script language="JScript" runat="server">
     
          function CreateDataSource() : ICollection
          {
             var dt : DataTable = new DataTable();
             var dr : DataRow;
     
             dt.Columns.Add(new DataColumn("IntegerValue", GetType(Int32)));
             dt.Columns.Add(new DataColumn("StringValue", GetType(String)));
             dt.Columns.Add(new DataColumn("CurrencyValue", GetType(double)));
     
             for (var i : int = 0; i < 9; i++) 
             {
                dr = dt.NewRow();
     
                dr[0] = i;
                dr[1] = "Item " + i.ToString();
                dr[2] = 1.23 * (i + 1);
     
                dt.Rows.Add(dr);
             }
     
             var dv : DataView = new DataView(dt);
             return dv;
          }
     
          function Page_Load(sender : Object, e : EventArgs) 
          {
     
             if (!IsPostBack) 
             {
                // Load this data only once.
                ItemsGrid.DataSource= CreateDataSource();
                ItemsGrid.DataBind();
             }
          }
     
       </script>
     
    <body>
     
       <form runat=server>
     
          <h3>BoundColumn Example</h3>
     
          <b>Product List</b>
     
          <asp:DataGrid id="ItemsGrid"
               BorderColor="black"
               BorderWidth="1"
               CellPadding="3"
               AutoGenerateColumns="false"
               runat="server">         <HeaderStyle BackColor="#00aaaa">
             </HeaderStyle>         <Columns>            <asp:BoundColumn
                     HeaderText="Number" 
                     DataField="IntegerValue">
                </asp:BoundColumn>            <asp:BoundColumn
                     HeaderText="Description" 
                     DataField="StringValue">
                </asp:BoundColumn>            <asp:BoundColumn
                     HeaderText="Price" 
                     DataField="CurrencyValue" 
                     DataFormatString="{0:c}">
                </asp:BoundColumn>         </Columns>
     
          </asp:DataGrid>
     
       </form>
     
    </body>
    </html>
      

  2.   

    我是这样用的:
    <asp:BoundColumn DataField="QCYE" SortExpression="FHSJ" HeaderText="期初余额" DataFormatString="{0:f2}"></asp:BoundColumn>