2014-10-22 40 views
0

我在窗體中有這個datagridview,我確實有一個按鈕應該添加一個新的行到datagridview,所以當我點擊它時它會打開一個新的窗體窗體,我如何保存我當前窗體的數據並更新datagrid視圖?從WindowForm更新datagridview

數據網格從列表填充的,就像這樣:

public void GetUserDetails() 
     { 
         List<xml.UserDescriptor> users = new List<xml.UserDescriptor>(); 
         foreach (xml.UserDescriptor dbList in xmlData.Users) 
         { 
          if (dbList.DatabaseDescriptorName == name) 
          { 
           users.Add(new xml.UserDescriptor() { DatabaseDescriptorName = dbList.DatabaseDescriptorName, Username = dbList.Username, Password = dbList.Password, IsAdmin = dbList.IsAdmin }); 

          } 
         } 

         dataGridView3.DataSource = users; 

      } 

我如何保存我插入新的表單中的數據,並關閉它後新行應該出現在DataGridView。

請任何幫助,將不勝感激。

回答

0

使用BindingList<xml.UserDescriptor>,不List<xml.UserDescriptor>

將此users變量傳遞給新窗體,並在新窗體中更新它。

MainForm.cs

new NewForm(users).ShowDialog(); 

NewForm.cs

public class NewForm : Form 
{ 
    BindingList<xml.UserDescriptor> _users; 
    public NewForm(BindingList<xml.UserDescriptor> users) 
    { 
     _users = users; 
    } 

    private void btnAddUser_Click(object sender, EventArgs e) 
    { 
     _users.Add(new xml.UserDescriptor(){...}); 
    } 
} 
+0

非常感謝你,好了,我是一個初學者,從這裏,如果我點擊保存出現什麼,我怎麼弄更新的datagrid視圖? – Perf 2014-10-22 06:12:17

+0

哦完美,它的工作:D – Perf 2014-10-22 06:17:24

0

你可以在你的FormClosing事件中做到這一點。

以下是將列,行和單元格添加到datagridview的示例。

Option Strict On 
Option Explicit On 
Option Infer Off 
Public Class Form1 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     DataGridView1.Columns.Add(New DataGridViewTextBoxColumn) 
     DataGridView1.Columns.Add(New DataGridViewTextBoxColumn) 
     DataGridView1.Columns.Add(New DataGridViewTextBoxColumn) 
     DataGridView1.Columns.Add(New DataGridViewTextBoxColumn) 
     For i As Integer = 0 To 100 Step 4 
      Dim row As New DataGridViewRow 
      Dim cell1 As New DataGridViewTextBoxCell 
      Dim cell2 As New DataGridViewTextBoxCell 
      Dim cell3 As New DataGridViewTextBoxCell 
      Dim cell4 As New DataGridViewTextBoxCell 
      cell1.Value = i.ToString 
      cell2.Value = (i + 1).ToString 
      cell3.Value = (i + 2).ToString 
      cell4.Value = (i + 3).ToString 
      row.Cells.AddRange({cell1, cell2, cell3, cell4}) 
      DataGridView1.Rows.Add(row) 
     Next 
    End Sub 
End Class