我是Windows应用程序的新手。我需要在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 :(得分:1)
DataGridRowView.Add方法接受字符串数组:
gvAdminSummary.Rows.Add( { p.FName, p.LName, p.PNo });
但是,可能会有一个更好的解决方案,可以将网格直接绑定到您的人员列表。
答案 1 :(得分:0)
这可能不是正确的方法。创建一个BindingSource并将对象的集合绑定到它。然后将BindingSource绑定到Grid的数据源。确保您的对象实现INotifyPropertyChanged
。这样,无论何时,只要将对象添加到集合中,或者更改对象中的属性,它都会自动反映在网格中。
答案 2 :(得分:0)
我不知道DataGridView
,但如果你想坚持直接在控件中插入数据,为什么不使用ListView
呢?它有一个更适合您当前需求或做事方式的API。
答案 3 :(得分:0)
要么
gvAdminSummary.Datasource =人; gvAdminSummary.databind();
或者
foreach(var p in personList) { DataGridViewRow dr = new DataGridViewRow(); dr.cells.add(new datagridcell())等。填充单元格 gvAdminSummary.Rows.add(DR);
}