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