DataGrid:动态添加行

时间:2010-10-22 17:50:42

标签: c# windows datagrid

我是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;


        }

4 个答案:

答案 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);

    }