如何在将表单从背景变为前景时更新数据网格视图?

时间:2013-05-05 20:24:01

标签: c# mysql winforms

这里我有一个包含数据网格视图和三个按钮的表单,即编辑,删除和返回。 当我加载表单时,它在数据网格中显示正确的数据,但假设我通过单击编辑或删除按钮来编辑或删除记录,并且在执行这些操作后此表单到达前景时,数据网格视图不是' t显示更新的数据。 欢迎任何帮助..... 注意 - 当我单击编辑或删除按钮时,此表单不会关闭它只是进入后台。 我的代码如下: -

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 个答案:

答案 0 :(得分: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();
    }

请注意,这可能会导致您计划对数据库进行更多调用。您可以通过检查数据是否被操作(使用操纵类的属性)来检查其中一个“编辑按钮”是否被点击,甚至更好,从而避免这种情况。