2010-10-22 79 views
1

我是Windows应用程序的新手。我需要动态添加包含人员数据的DataGrid中的行。当我做以下事情时,只能看到最后一行中的最后一个人。我看到行填充但没有数据。如果我在第一次抓取时休息一下,我会得到正确的。但有些错误。任何想法DataGrid:按行添加行

foreach (var p in personList) 
     { 

      gvAdminSummary.Rows.Add(new DataGridViewRow()); 
      gvAdminSummary.Rows[gvAdminSummary.Rows.Count-1].Cells[0].Value = p.FName; 
      gvAdminSummary.Rows[gvAdminSummary.Rows.Count - 1].Cells[1].Value = p.LName; 
      gvAdminSummary.Rows[gvAdminSummary.Rows.Count - 1].Cells[2].Value = p.PNo; 


     } 
+0

这是一个数据绑定的网格吗?如果是这样,你应该添加到数据源,而不是网格本身。 – 2010-10-22 17:55:29

+0

我会尝试MessageBox.Show gvAdminSummary.Rows.Count每个周期。是否更新? – 2010-10-22 17:57:10

回答

1

的DataGridRowView.Add方法接受字符串数组:

gvAdminSummary.Rows.Add({ p.FName, p.LName, p.PNo }); 

有可能的,但是,那里的电网直接绑定到你的人名单是一个更好的为您解决。

0

这可能不是正确的做法。创建一个BindingSource并将其对象的集合绑定到它。然后将BindingSource绑定到网格的数据源。确保您的物品实施INotifyPropertyChanged。这样,每当将对象添加到集合中或更改对象内的属性时,它都会自动反映到网格中。

0

我不知道DataGridView,但是如果你想坚持直接在控件中插入数据,为什么不用ListView呢?它有一个API更适合您当前的需求或做事的方式。

0

可以是

gvAdminSummary.Datasource = persons; gvAdminSummary.databind();

或者

的foreach(在personList VAR P) { 的DataGridViewRow DR =新的DataGridViewRow(); dr.cells.add(new datagridcell())等。填充单元格 gvAdminSummary.Rows.add(dr);

}