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
--------------------编程问答-------------------- 果然前面的都是星星,眼疾手快!!!很黄很暴力!!!! --------------------编程问答--------------------
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里时间列,默认是年月日时分秒,想改成年月日,没有时分秒,应该怎么设置格式? --------------------编程问答-------------------- 为什么我用这个方法,不好使呢?
DataGridView.Columns["AveragePrice"].DefaultCellStyle.Format = "N2";
--------------------编程问答-------------------- 真MM还是假MM呢?一个MM,引得无数人来回帖
补充:.NET技术 , C#