2010-10-22 131 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);

}