2013-07-04 8 views
1

У меня есть ListView заселен этот код:ListView столбец числового в целое

if (popula.Rows.Count > 0) 
{ 
    foreach (DataRow row in popula.Rows) 
    { 
     listView1.Items.Add(row[0].ToString()); 
     listView1.Items[listView1.Items.Count - 1].SubItems.Add(row[1].ToString()); 
     listView1.Items[listView1.Items.Count - 1].SubItems.Add(row[2].ToString()); 
     listView1.Items[listView1.Items.Count - 1].SubItems.Add(row[3].ToString()); 
     listView1.Items[listView1.Items.Count - 1].SubItems.Add(row[4].ToString()); 
    } 

Первый столбец является числовым с этим форматом:

Code 
------------- 
    69675.0000 
    6078.0000 
    57536.0000 
    37625.0000 
    54079.0000 
    57933.0000 
    51968.0000 
    59160.0000 
    25392.0000 

Я хочу о только на дисплее:

69675 
6078 

Я не люблю показывать нули и точку. может быть sonthing как этот

listView1.Items[listView1.Items.Count - 1].SubItems.Add.format ((row[4].ToString())); 

Бламу я написать

listView1.Items.Add(row[0].ToString("F0")); 

и показать мне эту ошибку: «Нет перегрузки для метода„тестирования“принять 1 аргумент.

У меня есть добавить

using system.globalization; 

, но до сих пор показывают мне ошибку;

ответ

0

Когда вы делаете number.ToString() по номерам с двойной или с плавающей запятой, по умолчанию используется определенное число десятичных знаков.

Вы можете изменить это, добавив параметр форматной строки в ToString вызова следующим образом:

((double)row[4]).ToString("F0") 

F reffers в формате с фиксированной точкой, а число после относится к тому, сколько цифр будет отображаться после того, как смысл. Таким образом, F0 - это номер фиксированной точки без цифр после точки, в основном целое.

Подробнее: http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#FFormatString

+0

Там нет перегрузки ToString на объект, который принимает строку в параметре, есть один на двойной, хотя. –

+0

Что делать, если вы сначала распакуете ячейку, как мой обновленный ответ? – Blam

+0

Тогда это будет работать –

0

Использование linq to dataset (сделать Сюр у вас есть System.Data.DataSetExtensions в ваших ссылках):

const string format = "D"; 
Func<DataRow, int, string> formatter = 
    (DataRow row, int index) => row.Field<double>(index).ToString(format); 

foreach (DataRow row in popula.AsEnumerable()) 
{ 
    var item = listView1.Items.Add(formatter(row, 0)); 

    for (int i = 1; i <= 4; i++) 
    { 
    item.SubItems.Add(formatter(row, i)); 
    } 
} 
Смежные вопросы