当前位置:编程学习 > C#/ASP.NET >>

mm紧急求救!DataGridView只显示两位小数位数问题?

我的DataTable中有decimal计算列"AveragePrice",在DataGridView中我需要将他只显示两位有效位数,有没有办法实现?如果能够在DataTable中实现就更好了

重酬! --------------------编程问答-------------------- dataformatstring={0:d2}
--------------------编程问答-------------------- DataGridViewCellStyle.Format 属性 --------------------编程问答-------------------- 使用 DataFormatString 属性来提供列中各项的自定义格式。

数据格式字符串由以冒号分隔的两部分组成,形式为 {A:Bxx}。例如,格式化字符串 {0:D2} 将单元格格式化为显示一个包含两个小数位数的数字。

注意   整个字符串必须放在大括号内,表示它是格式字符串,而不是原义字符串。大括号外的任何文本均显示为原义文本。
冒号前的值(常规示例中为 A)指定在从零开始的参数列表中的参数索引。

注意   此值只能设置为 0,因为每个单元格中只有一个值。
冒号后的字符(一般示例中为 B)指定值的显示格式。下表列出了一些常用格式。

格式字符 说明 
C  以货币格式显示数值。 
D  以十进制格式显示数值。 
E  以科学记数法(指数)格式显示数值。 
F  以固定格式显示数值。 
G  以常规格式显示数值。 
N  以数字格式显示数值。 
X  以十六进制格式显示数值。 

注意   除 X 以指定的大小写形式显示十六进制字符之外,其他格式字符不区分大小写。
格式字符后的值(一般示例中为 xx)指定显示的值的有效位数或小数位数。

有关格式化字符串的更多信息,请参阅格式设置概述。
--------------------编程问答-------------------- Format 格式化输出 --------------------编程问答-------------------- this.dgv.Columns["AveragePrice"].DefaultCellStyle.Format = "{0:d2}";不行的呀????????????????? --------------------编程问答-------------------- 下面的示例展示如何使用 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>
--------------------编程问答-------------------- study --------------------编程问答-------------------- .Format = "N2"; --------------------编程问答-------------------- 美女铁必定 --------------------编程问答-------------------- 希望你能赶快搞定啊,我也有这问题,一起学习 --------------------编程问答-------------------- 进来看MM --------------------编程问答-------------------- table列设置为两位小数,计算时可以设置为两位小数保存即可 --------------------编程问答-------------------- 重酬!???
怎么酬谢啊,KISS? --------------------编程问答-------------------- 又见mm求助贴 --------------------编程问答-------------------- dataGridView1["DueDate", i].Value = Convert.ToDateTime(objtab.Rows[0]["DueDate"]).ToShortDateString(); --------------------编程问答-------------------- 学学 --------------------编程问答-------------------- 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;
        }
    } --------------------编程问答-------------------- 哎..大家都是色狼,我也是..
也可以tostring(里面的格式字符串)来实现.不懂的查下msdn --------------------编程问答-------------------- 不就一个简单的
.ToString("#0.00")就可以实现了吗。。 --------------------编程问答-------------------- mark --------------------编程问答-------------------- 近来看MM --------------------编程问答-------------------- 100分,真不少..这问题以前出现过 --------------------编程问答-------------------- 进来..看mm --------------------编程问答-------------------- 顶一顶~~ --------------------编程问答-------------------- select   convert(decimal(18,2),AveragePrice)   from   table   
--------------------编程问答-------------------- 果然前面的都是星星,眼疾手快!!!很黄很暴力!!!! --------------------编程问答--------------------
引用 11 楼 lovefootball 的回复:
进来看MM

PS:真是MM么?怎么也不贴个PP的? --------------------编程问答-------------------- DataGridView 编辑中设置
DataGridViewCellStyle.Format   属性
设置方法参照3楼 --------------------编程问答-------------------- sql 中用round函数即可 --------------------编程问答-------------------- Column.ValueType = System.Type.GetType("Decimal");//typeof(decimal);

Column.DefaultCellStyle.Format = “N2”; --------------------编程问答-------------------- 我弄了一个下午这个了,快疯了 --------------------编程问答-------------------- 在DataGridView显示里面改就好啦···
一个Format属性··· --------------------编程问答-------------------- 想笑  。。 --------------------编程问答-------------------- 却慢慢的笑不出来了 --------------------编程问答-------------------- 真搞笑。。。。 --------------------编程问答-------------------- AveragePrice 列?  是asp.net还是winform winform直接在绑定的字段后面加 name.ToString("f2")

保留2位。

网站的话就有点麻烦
 <%# System.Math.Round(decimal.Parse(Eval("AveragePrice").ToString()), 2)%>

OK。就这样吧,应该可以满足你的要求了。。

别忘记结贴给分! --------------------编程问答--------------------   另外DataTable计算?没听过。你可以直接把该值拿出来计算,在赋值给你要显示的地方都没问题的。
后面加个ToString("f0")即可 --------------------编程问答-------------------- 难得有MM发帖,难得上来看个贴,顶…… --------------------编程问答--------------------

DataGridView.Columns["AveragePrice"].DefaultCellStyle.Format = "N2";
--------------------编程问答-------------------- 楼上正解啊,谢谢! --------------------编程问答-------------------- 顺便问一下,想把datagridview里时间列,默认是年月日时分秒,想改成年月日,没有时分秒,应该怎么设置格式? --------------------编程问答-------------------- 为什么我用这个方法,不好使呢?
引用 39 楼  的回复:
C# code


DataGridView.Columns["AveragePrice"].DefaultCellStyle.Format = "N2";
--------------------编程问答-------------------- 真MM还是假MM呢?一个MM,引得无数人来回帖
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,