0

这里我有一个表单,其中包含一个数据网格视图和三个按钮,即编辑、删除和返回。最初,当我加载表单时,它会在数据网格中显示正确的数据,但是假设我通过单击编辑或删除按钮来编辑或删除记录,并且在执行这些操作后该表单进入前台时,数据网格视图不是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();
        }
    }
}
4

1 回答 1

1

您可以使用表单的“已激活”事件。这样,每次激活表单时(在您的情况下为“进入前台”),数据都会更新:

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();
    }

请注意,这可能会导致对数据库的调用次数超出您的计划。您可以通过检查是否单击了“编辑按钮”之一来避免这种情况,或者更好的是,通过检查数据是否被操纵(使用操纵类的属性)

于 2013-05-06T06:30:50.237 回答