在C#中
我在数据库中有一个处理时间编号数据列,格式为“###”或“##”(例如:“813”或“67”)
当我将它绑定到网格视图时,我想以“0。###”格式显示它(例如:“0.813”或“0.067”)
我尝试使用{0:0.000}和其他格式化。但似乎都没有效果。谁能告诉我如何编写格式字符串?
答案 0 :(得分:4)
在显示之前你应该将它乘以.001,然后你可以使用普通的{0:0.000}
格式字符串。
如果由于某种原因,这是不可能的 - 您可以使用使用“。”的格式字符串{0:0\\.000}
。不是小数分隔符,而是文字。
答案 1 :(得分:2)
您需要在该列上禁用HTML编码才能使格式字符串生效。
答案 2 :(得分:1)
try
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (((DataRowView)(e.Row.DataItem))["Columnname"].ToString().Equals("Total", StringComparison.OrdinalIgnoreCase))
{
e.Row.Font.Bold = true;
//-----or ant thing you want to do------
}
}
}
catch (Exception ex)
{
}
答案 3 :(得分:1)
这可以使用the "," Custom Specifier来完成,{{3}}可以用作数字缩放说明符:
数字缩放说明符:如果在显式或隐式小数点的左侧立即指定了一个或多个逗号,则每个逗号的格式化数字除以1000。
在您的示例中,格式字符串{0:0,.000}
可用于将813格式化为0.813
。
两个逗号将缩放1,000,000,例如{0:0,,.0M}
会将1753456格式化为1.8M
。
答案 4 :(得分:0)
如果由于某种原因在将其绑定到网格之前无法更改该值,则可以在显示之前处理RowDataBound事件并将数字除以1000。
// Handle the grid's RowDataBound event
MyGridView.RowDataBound += new GridViewRowEventHandler(MyGridView_RowDataBound);
// Set the value to x / 1000 in the RowDataBound event
protected void MyGridView_RowDataBound( object sender, GridViewRowEventArgs e )
{
if( e.Row.RowType != DataControlRowType.DataRow )
return;
// Cast e.Row.DataItem to whatever type you're binding to
BindingObject bindingObject = (BindingObject)e.Row.DataItem;
// Set the text of the correct column. Replace 0 with the position of the correct column
e.Row.Cells[0].Text = bindingObject.ProcessingTime / 1000M;
}
答案 5 :(得分:0)
所以你在找这样的东西吗?
String.Format("{0:0.000}", test/1000);
答案 6 :(得分:0)
你的意思是?
GridView.DataSource = ....
BoundField total = new BoundField();
total.DataField = "Total";
total.HeaderText = "Total Amount";
total.DataFormatString = "{0:C}";
donations.Columns.Add(total);
......