有两个窗口,Form1和Form2
Form1中有个datagrid1绑定到一个数据库表
现在我在Form2中添加了一行数据到该数据库表,我在点击了添加按钮后如何才能让Form1中的dataGrid1自动更新呢?
我写的代码是这样的,但是却不起作用private void btn_add_Click(object sender, System.EventArgs e)
{
addInfomation();\\此处添加数据到数据库,省略 DataBindingdata(); MessageBox.Show("添加记录成功");
}
private void DataBindingdata()
{
String Ole = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Client.mdb;";
OleDbConnection conn = new OleDbConnection(Ole);
String Olecmd = "* FROM author ORDER BY id";
conn.Open();
DataTable tempTable = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(Olecmd,conn);
da.Fill(tempTable);
conn.Close();
DataView dv = new DataView(tempTable);
Form1 er = new Form1();//在这里绑定到Form1中dataGrid1
er.dataGrid1.DataSource = dv;
}
Form1中有个datagrid1绑定到一个数据库表
现在我在Form2中添加了一行数据到该数据库表,我在点击了添加按钮后如何才能让Form1中的dataGrid1自动更新呢?
我写的代码是这样的,但是却不起作用private void btn_add_Click(object sender, System.EventArgs e)
{
addInfomation();\\此处添加数据到数据库,省略 DataBindingdata(); MessageBox.Show("添加记录成功");
}
private void DataBindingdata()
{
String Ole = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Client.mdb;";
OleDbConnection conn = new OleDbConnection(Ole);
String Olecmd = "* FROM author ORDER BY id";
conn.Open();
DataTable tempTable = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(Olecmd,conn);
da.Fill(tempTable);
conn.Close();
DataView dv = new DataView(tempTable);
Form1 er = new Form1();//在这里绑定到Form1中dataGrid1
er.dataGrid1.DataSource = dv;
}
er.dataGrid1.DataSource = dv;
1、在打开form2的是否,先获取form1中datagrid的数据源,即DataTable;
2、在form2中,通过DataTable进行添加新记录的操作;
3、通过DataTable来更新数据库,从而达到数据库的更新操作。ps:至于form1的Datagrid会自动更新,因此不用作多余的操作。
Form1 er = new Form1();//在这里绑定到Form1中dataGrid11.在Form1调用Form2时,把"this"做为一个参数传递过去.2.在Form2的中定义一个 Form1 er = null.定义一个带参数的构造函数
public Form2(Form1 fm)
{
er = fm;
}
3.删除 Form1 er = new Form1();//在这里绑定到Form1中dataGrid1 试试
刚才我贴代码的时候为了省事,用String Olecmd = "select * FROM author ORDER BY id";来选择数据库了,实院上是"select [id] as [编号],[name] as [姓名]..."等,在dataGrid1里我并没有把所有的数据列都显示出来,但添加的时候必须要全部加了.这样用您的办法,我就没法添加dataGrid1里没有有列了
{
//要包含不带参数的构造函数的内容.
......
er = fm;
}
非常感谢colaxu(飞翔) .我这小菜又学到东西了