2014-01-05 43 views
0

我有一个字典用,我想用它来填充一个ListView多个值。C#填充从字典列表视图具有多个值

我得到一个“ArgumentOutOfRangeException是未处理”和“invalidArgument =‘1’值是无效的‘索引’

这里就是我希望是不够的revelant代码:

public partial class frmResultList : Form 
{ 

    public class MyLookupCustList 
    { 
     public string sEstNum { get; set; } 
     public string sLName { get; set; } 
     public string sFName { get; set; } 
     public string sCity { get; set; } 
    } 

    public frmResultList(int iMyCount, Dictionary<string, frmResultList.MyLookupCustList> MyDictList) 
    { 
     InitializeComponent(); 
     fillListView(iMyCount, MyDictList); 
    } 

    public void fillListView(int iMyCount, Dictionary<string, frmResultList.MyLookupCustList> MyDictList) 
    { 

     listView1.Clear(); 

     ListViewItem item; 

     for (int i = 0; i < iMyCount; i++) 
     { 
      listView1.Items.Clear(); 
      var o = MyDictList[i.ToString()]; 
      var myListViewItem = new ListViewItem(); 

      myListViewItem = this.listView1.Items.Add(i.ToString()); 
      myListViewItem.SubItems[1].Text = o.sEstNum; 
      myListViewItem.SubItems[2].Text = o.sLName; 
      myListViewItem.SubItems[3].Text = o.sFName; 
      myListViewItem.SubItems[4].Text = o.sCity; 

      listView1.Items.Add(myListViewItem); 

     } 

     listView1.View = View.Details;   
     listView1.Show(); 
     listView1.Refresh(); 


    }  

我得到的异常,当我尝试插入第一个子项目 这里===> myListViewItem.SubItems [1]。文本= o.sEstNum; 请大家帮忙,我需要做什么来解决这个

回答

0

吗?正尝试用ind更新项目ex [1],该项目尚不存在,您需要先创建它。对于您要尝试访问的子项目,也会发生同样的情况 - 2,3,4 因此,您需要有逻辑来检查项目是否先存在,是否更新它,否则添加它。

+0

我该如何创建它?你可以显示代码来做到这一点? – user3162901

+0

当我看着o.sEstNum它有“648”。 – user3162901

+0

对,o.sEstNum不是问题,它是等式的另一面。当调试时,看看你的'myListViewItem.SubItems',我敢打赌它是空的。如果是这种情况,您需要在子项列表中创建项目,然后尝试访问它。我正在尝试为你获取一个示例,但是我没有在ListViewItem上看到SubItems属性。 –