2015-12-02 74 views
0

我試着去不同的項目添加到列表中,然後顯示在一個DataGridView ..C#項目添加到列表<T>和顯示

我有這個,但每次我添加了一個新項目,更換的最後一個項目

private void btnAgregar_Click(object sender, EventArgs e) 
    { 
     List<alumno> p2 = new List<alumno>(); 
     p2.Add(new alumno() { telefono=(int.Parse(txtId.Text)), nombre=(txtNombre.Text), apellido=(txtApellido.Text) }); 
     dataGridView1.DataSource = p2; 
    } 
+2

每次點擊按鈕時,您都會創建一個新的空列表,並向其中添加一個項目。您可能希望將'p2'作爲實例字段存儲。 –

回答

0

你不會堅持你的項目在任何地方。你只是建立一個新的列表,每次:

List<alumno> p2 = new List<alumno>(); 

如果你的類本身是持久性的,你可以把它的一類級屬性:

private List<alumno> p2 = new List<alumno>(); 

private void btnAgregar_Click(object sender, EventArgs e) 
{ 
    p2.Add(new alumno() { telefono=(int.Parse(txtId.Text)), nombre=(txtNombre.Text), apellido=(txtApellido.Text) }); 
    dataGridView1.DataSource = p2; 
} 

注意,在Web應用程序這會是非常不同的,因爲在Web應用程序中,類實例本身並不存在。在這種情況下,您想要將價值堅持到其他地方,並且您有許多選擇。頁面狀態,會話狀態,應用程序狀態,數據庫等。

+0

謝謝你的回答..如果我想添加更多的物品到列表中,並保留舊的..? – luisk182

+0

@ luisk182:那麼,這就是在某種方法之外的地方堅持列表的關鍵。因此,您可以將更多項目添加到列表的單個實例,而不是不斷創建新實例。 – David

+0

我已經將該列表放在方法之外,但是我只能添加一個項目 – luisk182

0

您應該將列表的創建從clickEvent移出。因爲每次點擊該按鈕,都會創建一個新列表,而您的上一個列表將會丟失。您應該首先聲明列表(例如在表單啓動時),然後使用ClickEvent將您的項目添加到列表中

`List p2 = new List();

私人無效btnAgregar_Click(對象發件人,EventArgs的) { p2.Add(新alumno(){telefono =(int.Parse(txtId.Text)),農佈雷=(txtNombre.Text),apellido =( txtApellido.Text)}); dataGridView1.DataSource = p2; }`