4

在 C# 中

我在数据库中有一个处理时间编号数据列,格式为“###”或“##”(例如:“813”或“67”)

当我将它绑定到网格视图时,我想以这种格式“0.###”(例如:“0.813”或“0.067”)显示它

我尝试使用 {0:0.000} 和其他格式。但似乎没有一个工作。谁能告诉我如何编写格式字符串?

4

7 回答 7

4

你真的应该在显示之前将它乘以 .001,然后你可以使用正常的{0:0.000}格式字符串。

如果由于某种原因这是不可能的 - 您可以使用{0:0\\.000}使用“。”的格式字符串。不是作为小数分隔符,而是作为文字。

于 2008-11-24T16:34:46.817 回答
2

您需要在该列上禁用 HTML 编码才能使格式字符串生效。

延伸阅读

于 2008-11-24T15:57:04.660 回答
1

这可以使用"," 自定义说明符来完成,它可以用作数字缩放说明符:

数字缩放说明符:如果在显式或隐式小数点左侧立即指定一个或多个逗号,则要格式化的数字除以每个逗号的 1000。

在您的示例中,格式字符串{0:0,.000}可用于将 813 格式化为0.813.

两个逗号将缩放 1,000,000,例如{0:0,,.0M}将 1753456 格式化为1.8M.

于 2012-02-11T09:10:43.360 回答
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)
{

}
于 2010-06-18T15:35:42.210 回答
0

你的意思是?

GridView.DataSource = .... 

BoundField total = new BoundField();
total.DataField = "Total";
total.HeaderText = "Total Amount";
total.DataFormatString = "{0:C}";
donations.Columns.Add(total);

......
于 2009-01-06T23:21:09.847 回答
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;
}
于 2008-11-24T16:43:25.753 回答
0

所以你在寻找这样的东西吗?

String.Format("{0:0.000}", test/1000);
于 2008-11-24T17:19:22.203 回答