2011-03-26 167 views
0

我有一个listview的问题。我不确定如何使用循环来填充项目。下面的代码适用于第一行,我认为我需要增加行,但我不知道如何。当列表包含超过1项我得到的错误信息:将项目添加到循环中的列表视图

失败的阵列

foreach (List<string> l in list) 
{ 
    ListViewItem item = new ListViewItem(l[0]); 
    item.SubItems.Add(l[1]); 
    item.SubItems.Add(l[2]); 
    item.SubItems.Add(l[3]); 
    item.SubItems.Add(l[4]); 
    lstBooks.Items.Add(item); 
} 

在比较两个元素下面是整体功能。我本来与列表中的问题,但它是在这里populating a list of a list of strings but

解决的视图设置为细节

private void ListBooks() 
    { 
     lstBooks.Items.Clear(); 
     lstBooks.Columns.Clear(); 
     lstBooks.Visible = true; 

     List<List<string>> list = db.ListDetailsByGenre(); 
     lstBooks.Columns.Add("Title", 120); 
     lstBooks.Columns.Add("Author", 120); 
     lstBooks.Columns.Add("Library", 120); 
     lstBooks.Columns.Add("Genre", 120); 



    foreach (List<string> l in list) 

      ListViewItem item = new ListViewItem(l[0]); 
      item.SubItems.Add(l[1]); 
      item.SubItems.Add(l[2]); 
      item.SubItems.Add(l[3]); 
      item.SubItems.Add(l[4]); 
      lstBooks.Items.Add(item); 

     } 

    } 

回答

0

我创建了下面的测试,并没有发生任何错误。

 List<List<string>> list = new List<List<string>>(); 

     list.Add(new List<string> { "1a", "1b", "1c", "1d", "1e" }); 
     list.Add(new List<string> { "2a", "2b", "2c", "2d", "2e" }); 
     list.Add(new List<string> { "3a", "3b", "3c", "3d", "3e" }); 
     list.Add(new List<string> { "4a", "4b", "4c", "4d", "4e" }); 
     list.Add(new List<string> { "5a", "5b", "5c", "5d", "5e" }); 

     foreach (List<string> l in list) 
     { 
      ListViewItem item = new ListViewItem(l[0]); 
      item.SubItems.Add(l[1]); 
      item.SubItems.Add(l[2]); 
      item.SubItems.Add(l[3]); 
      item.SubItems.Add(l[4]); 
      lstBooks.Items.Add(item); 
     } 

几点:

  • 该问题可能是在结构/的list数据 - 提供对list内容的一个例子。

  • Add方法只是将ListViewItem添加到ListView的Items集合的末尾,因此您不需要增加行。

  • 它有可能在这里并不适用,但您可能希望或需要填充它之前清除ListView中的现有项目:lstBooks.Items.Clear();

列表视图属性可能从默认值其他什么,和你在什么时候得到错误?

+0

他的代码看起来不错,你做了什么改变?只是OP没有完成他的问题。 – 2011-03-26 09:08:16

+0

@Sanjee - foreach循环不变。我只是通过创建一个列表清单来测试'list'。 – JYelton 2011-03-26 09:12:59

+0

它在到达循环之前被清除。第一个循环完美运行,但第二个循环崩溃。不得不出去一段时间,但我会回来时会提供更多的代码 – flo 2011-03-26 09:18:47

1
 foreach (List<string> l in list) 

     ListViewItem item = new ListViewItem(l[0]); 
     item.SubItems.Add(l[1]); 
     item.SubItems.Add(l[2]); 
     item.SubItems.Add(l[3]); 
     item.SubItems.Add(l[4]); 
     lstBooks.Items.Add(item); 

    } 

你缺少一个{您的foreach(列表L中的列表),当您上传的代码的较大部分,但不是当你表现出函数本身之后。