格式listview列从numeric到int

时间:2013-07-04 14:30:55

标签: c# winforms

我有一个由此代码填充的列表视图:

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   

我不想显示零和点。也许像这样的东西

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

Blam我写了

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

并告诉我这个错误:'没有重载方法'测试'需要1个参数。

我已添加

 using system.globalization; 

但仍然显示错误;

2 个答案:

答案 0 :(得分:0)

当您对双点或浮点数进行number.ToString()时,它默认为一定的小数位数。

您可以通过向ToString调用添加格式字符串参数来更改此设置,如下所示:

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

F引用定点格式,后面的数字表示该点后显示的位数。所以F0是一个固定的点数,在该点之后没有数字,基本上是一个整数。

更多信息:http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#FFormatString

答案 1 :(得分: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));
  }
}