Как отформатировать числовую строку в gridview? - PullRequest
4 голосов
/ 24 ноября 2008

In C #

В базе данных есть столбец данных с номером времени обработки в этом формате "###" или "##" (например, "813" или "67")

Когда я привязал его к представлению сетки, я хотел отобразить его в этом формате «0. ###» (например: «0,813» или «0,067»)

Я пытался использовать {0: 0.000} и другие форматирования. Но никто, похоже, не работает. Может кто-нибудь сказать мне, как написать строку формата?

Ответы [ 7 ]

4 голосов
/ 24 ноября 2008

Вы должны действительно умножить его на 0,001 перед его отображением, тогда вы можете использовать обычную строку формата {0:0.000}.

Если по какой-то причине это невозможно - вы можете использовать строку формата {0:0\\.000}, которая использует «.» не как десятичный разделитель, а как литерал.

2 голосов
/ 24 ноября 2008

Вам нужно отключить кодировку HTML в этом столбце, чтобы строка формата вступила в силу.

Дополнительная литература

1 голос
/ 11 февраля 2012

Это можно сделать, используя пользовательский спецификатор "," , который можно использовать как спецификатор масштабирования чисел:

Спецификатор масштабирования числа: если одна или несколько запятых указаны непосредственно слева от явной или неявной десятичной точки, форматируемое число делится на 1000 для каждой запятой.

В вашем примере строку формата {0:0,.000} можно использовать для форматирования 813 как 0.813.

Две запятые будут масштабироваться до 1 000 000, например {0:0,,.0M} отформатирует 1753456 как 1.8M.

1 голос
/ 18 июня 2010

Хороший пост, это действительно помогло. Но лучше сделать это так:

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)
{

}
0 голосов
/ 07 января 2009

Вы имеете в виду?

GridView.DataSource = .... 

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

......
0 голосов
/ 24 ноября 2008

Так вы ищете что-то подобное?

String.Format("{0:0.000}", test/1000);
0 голосов
/ 24 ноября 2008

Если по какой-либо причине вы не можете изменить значение, прежде чем привязать его к сетке, вы можете обработать событие 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...