更新或插入另一个表单时,C#刷新DataGridView

Tha*_*Kai 12 c# datagridview

我有两种形式,form Aform B,

form A 允许用户插入和更新学生信息.

form b 只有一个DataGridView和按钮.

当我插入学生form A,然后我去form B,新学生没有在DataGridView上显示,如果我重新运行该程序,新学生将出现form B.

我尝试在表格b上使用此按钮

datagridview1.refresh();
datagridview1.update();
Run Code Online (Sandbox Code Playgroud)

但它仍然无法正常工作.


编辑:

我的插入工人的代码

cmd = new OleDbCommand("insert into FWINFOS (ID,Name,Gender,DateOfBirth,Race,WorkingPlace,PassportNO,DateOfExpire,[Position],Photo) values('" + textBox5.Text + "','" + textBox1.Text + "','" + textBox2.Text + "','" + dateTimePicker1.Value + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox6.Text + "','" + dateTimePicker2.Value + "',@Position,@Photo)", con);


        cmd.Parameters.AddWithValue("@Position", comboBox1.SelectedText.ToString());
        conv_photo();

        con.Open();
        int n = cmd.ExecuteNonQuery();
        //cmd.ExecuteNonQuery();
        con.Close();
        if (n > 0)
        {
            MessageBox.Show("Inserted");
            loaddata();

            rno++;
        }
        else
            MessageBox.Show("No Insert");



    }
Run Code Online (Sandbox Code Playgroud)

Datagridview1(Form2)插入新工作时不会自动更新.但是,如果我重新运行该应用程序,则会出现新工作人员.

apo*_*ene 17

// Form A
public void loaddata()
{
    //do what you do in load data in order to update data in datagrid
}
Run Code Online (Sandbox Code Playgroud)

然后在表格B上定义:

// Form B
FormA obj = (FormA)Application.OpenForms["FormA"];

private void button1_Click(object sender, EventArgs e)
{
    obj.loaddata();
    datagridview1.Update();
    datagridview1.Refresh();
}
Run Code Online (Sandbox Code Playgroud)


Con*_*rix 5

DataGridView.RefreshDataGridView.Update是从 Control 继承的方法。它们与重绘控件有关,这就是不出现新行的原因。

我的猜测是数据检索在 Form_Load 上。如果您希望 Form B 上的 Button 从数据库中检索最新数据,那么无论 Form_Load 正在做什么,您都必须这样做。

一个很好的方法是将您的数据检索调用分离到一个单独的函数中,并从 From Load 和 Button Click 事件中调用它。


小智 5

对于C#中的datagridview,请使用此代码

con.Open();
MySqlDataAdapter MyDA = new MySqlDataAdapter();
string sqlSelectAll = "SELECT * from dailyprice";
MyDA.SelectCommand = new MySqlCommand(sqlSelectAll, con);

DataTable table = new DataTable();
MyDA.Fill(table);

BindingSource bSource = new BindingSource();
bSource.DataSource = table;


dataGridView1.DataSource = bSource;
con.Close();
Run Code Online (Sandbox Code Playgroud)

它适用于在datagridview中显示新记录.


小智 5

要在任何地方刷新数据 gridview,您只需要此代码:

datagridview1.DataSource = "your DataSource";
datagridview1.Refresh();
Run Code Online (Sandbox Code Playgroud)