DataGridViewCellStyle.Format 属性

解决方案 »

  1.   

    使用 DataFormatString 属性来提供列中各项的自定义格式。数据格式字符串由以冒号分隔的两部分组成,形式为 {A:Bxx}。例如,格式化字符串 {0:D2} 将单元格格式化为显示一个包含两个小数位数的数字。注意   整个字符串必须放在大括号内,表示它是格式字符串,而不是原义字符串。大括号外的任何文本均显示为原义文本。
    冒号前的值(常规示例中为 A)指定在从零开始的参数列表中的参数索引。注意   此值只能设置为 0,因为每个单元格中只有一个值。
    冒号后的字符(一般示例中为 B)指定值的显示格式。下表列出了一些常用格式。格式字符 说明 
    C  以货币格式显示数值。 
    D  以十进制格式显示数值。 
    E  以科学记数法(指数)格式显示数值。 
    F  以固定格式显示数值。 
    G  以常规格式显示数值。 
    N  以数字格式显示数值。 
    X  以十六进制格式显示数值。 注意   除 X 以指定的大小写形式显示十六进制字符之外,其他格式字符不区分大小写。
    格式字符后的值(一般示例中为 xx)指定显示的值的有效位数或小数位数。有关格式化字符串的更多信息,请参阅格式设置概述。
      

  2.   

    this.dgv.Columns["AveragePrice"].DefaultCellStyle.Format = "{0:d2}";不行的呀?????????????????
      

  3.   

    下面的示例展示如何使用 DataFormatString 属性来为在 DataGrid 控件中显示价格的列指定货币格式。[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>
      

  4.   

    table列设置为两位小数,计算时可以设置为两位小数保存即可
      

  5.   

    重酬!???
    怎么酬谢啊,KISS?
      

  6.   

    dataGridView1["DueDate", i].Value = Convert.ToDateTime(objtab.Rows[0]["DueDate"]).ToShortDateString();
      

  7.   

    public static class PublicClass   //我写的类都给你吧。
        {
            public static void FormatGridStyle(DataGridView dgv, string [] field)
            {    //传入要操作的DataGridView, 和要格式化的字段数组。
                foreach (DataGridViewColumn dc in dgv.Columns)
                {
                    if (IndexOfStrArr(dc.Name, field))
                    {
                        dc.DefaultCellStyle.Format = "N2";  //格式化成两位。
                        dc.DefaultCellStyle.Alignment =   DataGridViewContentAlignment.MiddleRight;  //右对齐
                    }
                }
            }        public static void SetGridColumnVisible(DataGridView dgv, string[] field, bool AVisible)   //设置栏位是否可视。
            {
                foreach (DataGridViewColumn dc in dgv.Columns)
                {
                    if (IndexOfStrArr(dc.Name, field))
                    {
                        dc.Visible = AVisible;
                    }
                }
            }        public static void SetGridColumnReadonly(DataGridView dgv, string[] field, bool AReadOnly)  //设置栏位是否只读。
            {
                foreach (DataGridViewColumn dc in dgv.Columns)
                {
                    if (IndexOfStrArr(dc.Name, field))
                    {
                        dc.ReadOnly = AReadOnly;
                    }
                }
            }        public static bool IndexOfStrArr(string Astr, string[] StrArr)
            {
                bool rtBool = false;
                for (int i = 0; i < StrArr.Length; i++)
                {
                    if (StrArr[i].CompareTo(Astr) == 0)
                    {
                        rtBool = true;
                        break;
                    }
                }
                return rtBool;
            }
        }
      

  8.   

    哎..大家都是色狼,我也是..
    也可以tostring(里面的格式字符串)来实现.不懂的查下msdn
      

  9.   

    不就一个简单的
    .ToString("#0.00")就可以实现了吗。。
      

  10.   

    select   convert(decimal(18,2),AveragePrice)   from   table   
      

  11.   

    PS:真是MM么?怎么也不贴个PP的?
      

  12.   

    DataGridView 编辑中设置
    DataGridViewCellStyle.Format   属性
    设置方法参照3楼
      

  13.   

    Column.ValueType = System.Type.GetType("Decimal");//typeof(decimal);Column.DefaultCellStyle.Format = “N2”;
      

  14.   

    在DataGridView显示里面改就好啦···
    一个Format属性···
      

  15.   

    AveragePrice 列?  是asp.net还是winform winform直接在绑定的字段后面加 name.ToString("f2")保留2位。网站的话就有点麻烦
     <%# System.Math.Round(decimal.Parse(Eval("AveragePrice").ToString()), 2)%>OK。就这样吧,应该可以满足你的要求了。。别忘记结贴给分!
      

  16.   

      另外DataTable计算?没听过。你可以直接把该值拿出来计算,在赋值给你要显示的地方都没问题的。
    后面加个ToString("f0")即可
      

  17.   


    DataGridView.Columns["AveragePrice"].DefaultCellStyle.Format = "N2";
      

  18.   

    顺便问一下,想把datagridview里时间列,默认是年月日时分秒,想改成年月日,没有时分秒,应该怎么设置格式?
      

  19.   

    真MM还是假MM呢?一个MM,引得无数人来回帖