2013-07-24 80 views
2

我有一個數據表和這個數據表中有一些類型爲double的值的列。數據表中的C#數字格式

一切都很好,但當我得到的值爲0.0000005它顯示一些5E-9指數值。

我需要顯示相同的值而不是指數。

我施加這樣的文化信息,但它不能幫助我:

NumberFormatInfo numberFormat = new NumberFormatInfo(); 
numberFormat.NumberGroupSeparator = string.Empty; 
numberFormat.NumberDecimalDigits = 9; 
CultureInfo info = new CultureInfo(CultureInfo.CurrentCulture.Name); 
info.NumberFormat = numberFormat; 

//data table having data 
targetTable.Locale=info; 

一個能幫助我嗎?

感謝,

磨憨

+0

你:_it顯示一些5E-9指數值_你如何顯示你的'targetTable'對象?也許你不需要改變文化;也許你可以在某個地方應用數字格式的字符串。 –

+0

**您需要在哪裏顯示值?在Visual Studio的DataTable Visualizer中? –

+1

將DataTable附加到DataGrid .. – user1805169

回答

3

DataTable.Locale的文檔沒有說設置數字格式的任何內容;它說:

獲取或設置用於比較表中字符串的區域設置信息。

因此,它可能不會做你期待它做的事情。

如果您自動生成列,則可能需要將值存儲爲DataTable中的字符串,以便您可以指定格式。另一種選擇是附加到AutoGeneratingColumn事件設置自定義列屬性:

摘自MSDN

private void dataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
{ 
    // Modify the header of the Name column. 
    if (e.Column.Header.ToString() == "Name") 
     e.Column.Header = "Task"; 
    // Replace the DueDate column with a custom template column. 
    if (e.PropertyName == "DueDate") 
    { 
     // Create a new template column. 
     DataGridTemplateColumn templateColumn = new DataGridTemplateColumn(); 
     templateColumn.Header = "Due Date"; 
     templateColumn.CellTemplate = (DataTemplate)Resources["dueDateCellTemplate"]; 
     templateColumn.CellEditingTemplate = (DataTemplate)Resources["dueDateCellEditingTemplate"]; 
     templateColumn.SortMemberPath = "DueDate"; 
     // ... 
     // Replace the auto-generated column with the templateColumn. 
     e.Column = templateColumn; 
    } 

    // Cancel AutoGeneration of all boolean columns. 
    if (e.PropertyType == typeof(bool)) 
     e.Cancel = true; 

    if (e.PropertyName == "ValueField") 
    { 
     (e.Column as DataGridTextColumn).Binding.StringFormat = "N5"; 
    } 
} 

我會說,自動生成列是一個很好的方式,快速原型一格,但我通常最後直接配置列以指定數字格式等。

1

隨着Windows窗體DataGrid,您可以使用MSDN上How to: Format Data in the Windows Forms DataGridView Control描述的技術。

例如:

dataGridView1.Columns["YourColumn"].DefaultCellStyle.Format = "F9"; 

爲小數分隔符後固定數目的十進制數。

要了解"F9"的含義以及其他字符串的有效性,請參閱Standard Numeric Format StringsCustom Numeric Format Strings。對於DateTimeTimeSpan,枚舉類型等,存在類似的格式字符串。