2013-05-05 30 views
0

这里我有一个窗体,其中包含一个datagrid视图和三个按钮,即编辑,删除和返回。 Internally当我加载窗体它显示DataGrid中正确的数据,但假设如果我编辑或删除记录通过单击编辑或删除按钮,当这种形式来到执行这些操作后,前景DataGrid视图isn没有显示更新的数据。 任何帮助将受到欢迎..... 注 - 此表单不会关闭,当我点击编辑或删除按钮,它只是进入后台。 我的代码如下: -如何更新从后台到前台的表单时的DataGrid视图?

namespace RDASMS 
{ 
    public partial class LoginDb : Form 
    { 
     DataTable dt = new DataTable(); 
     public LoginDb() 
     { 
      InitializeComponent(); 
     } 

     //OleDbConnection vcon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\workspace\RDASMS\RDASMS\rdadb.mdb"); 

     public Form ReferToAdmin 
     { 
      get; 
      set; 
     } 

     private void LoginDb_Load(object sender, EventArgs e) 
     { 
      // TODO: This line of code loads data into the 'rdadbDataSet1.login' table. You can move, or remove it, as needed. 
      // this.loginTableAdapter.Fill(this.rdadbDataSet1.login); 
      // TODO: This line of code loads data into the 'rdadbDataSet.login' table. You can move, or remove it, as needed. 
      //this.loginTableAdapter.Fill(this.rdadbDataSet.login); 

      MyOleDbConnection.Open(); 
      DataSet ds = new DataSet(); 
      //DataTable dt = new DataTable(); 
      ds.Tables.Add(dt); 
      OleDbDataAdapter da = new OleDbDataAdapter(); 
      da = new OleDbDataAdapter("select * from login", MyOleDbConnection.vcon); 
      /*da.Fill(dt); 
      logindb_dataGridView.DataSource = dt.DefaultView;*/ 
      da.Fill(dt); 
      logindb_dataGridView.DataSource = dt; 
      logindb_dataGridView.AutoResizeColumns(); 
      MyOleDbConnection.Close(); 
     } 

     private void logindb_panel_Paint(object sender, PaintEventArgs e) 
     { 

     } 

     private void logindbback_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
      this.ReferToAdmin.Show(); 
     } 

     private void logindbdelete_Click(object sender, EventArgs e) 
     { 
      DeleteRecord dr = new DeleteRecord(); 
      dr.ReferToLogindb = this; 
      dr.Show(); 
      this.Hide(); 
     } 

     private void logindbedit_Click(object sender, EventArgs e) 
     { 
      EditRecord er = new EditRecord(); 
      er.ReferToLogindb = this; 
      er.Show(); 
      this.Hide(); 
     } 
    } 
} 

回答

1

您可以使用窗体的“Activated”事件。这样一来,每次的形式被激活的时间(“说到前景”,在你的情况下)的数据将被更新:

public LoginDb() 
    { 
     InitializeComponent(); 
     this.Activated += new EventHandler(LoginDb_Activated); 
    } 

    void LoginDb_Activated(object sender, EventArgs e) 
    { 
     this.BindData(); 
    } 

    private void BindData() 
    { 
     MyOleDbConnection.Open(); 
     DataSet ds = new DataSet(); 
     //DataTable dt = new DataTable(); 
     ds.Tables.Add(dt); 
     OleDbDataAdapter da = new OleDbDataAdapter(); 
     da = new OleDbDataAdapter("select * from login", MyOleDbConnection.vcon); 
     /*da.Fill(dt); 
     logindb_dataGridView.DataSource = dt.DefaultView;*/ 
     da.Fill(dt); 
     logindb_dataGridView.DataSource = dt; 
     logindb_dataGridView.AutoResizeColumns(); 
     MyOleDbConnection.Close(); 
    } 

请注意,这可能会导致数据库,那么你已经计划更多的电话。你可以通过检查是否有一个“编辑按钮”被点击,或者甚至更好,通过检查数据是否被操纵(使用操作类的属性)来避免这种情况: