从WindowForm更新datagridview
问题描述:
我在窗体中有这个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。
请任何帮助,将不胜感激。
答
使用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(){...});
}
}
答
你可以在你的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
非常感谢你,好了,我是一个初学者,从这里,如果我点击保存出现什么,我怎么弄更新的datagrid视图? – Perf 2014-10-22 06:12:17
哦完美,它的工作:D – Perf 2014-10-22 06:17:24