从另一个用户控件刷新数据网格视图



使用C#和Winform。

我读了几个类似的问题,但找不到任何与我的代码互锁的好答案。所以,请耐心等待我,并提前感谢你对我的帮助

我有一个包含多个用户控件的表单。在第一个用户控件中,可以插入、更新和删除数据库中的记录。在第二个用户控件中,有一个数据网格视图,其中填充了所有记录。

我遇到的问题是,每当我在第一个用户控件中插入、更新或删除记录时。当我切换到第二个用户控件时,它不会在datagridview中刷新。

下面是第二个用户控件,用于填充数据网格视图

private void populate()
{
database.OpenConnection();
string query = "SELECT id, name, qoute, time, date from maintable";
SQLiteDataAdapter sda = new SQLiteDataAdapter(query, database.connection);
SQLiteCommandBuilder builder = new SQLiteCommandBuilder(sda);
var ds = new DataSet();
sda.Fill(ds);
dtgNav.DataSource = ds.Tables[0];
databas.CloseConnection();
}
private void Navigation_Load(object sender, EventArgs e)
{
populate();
dtgNav.Columns[0].HeaderText = "ID";
}
public void Refresh()
{
this.Refresh(); 
}

下面是用于将记录添加到第一个用户控件中的数据网格视图的代码

private void btnAdd_Click(object sender, EventArgs e)
{
database.OpenConnection();
string query = "INSERT INTO maintable (`id`, `name`, `qoute`, `time`,`date`) VALUES (@Id, @Name, @Qoute, @Time, @Date)";
SQLiteCommand command = new SQLiteCommand(query, database.connection);
command.Parameters.AddWithValue("@Id", tbxID.Text);
command.Parameters.AddWithValue("@Name", tbxName.Text.Trim());
command.Parameters.AddWithValue("@Qoute", tbxQoute.Text.Trim());
command.Parameters.AddWithValue("@Time", tbxTime.Text.Trim());
command.Parameters.AddWithValue("@Date", dtpDate.Value.ToString("yyyy-MM-dd"));
command.ExecuteNonQuery();
MessageBox.Show("Added new event into the database.");
database.CloseConnection();

usercontrol2.Refresh();

}

如果我们能找到一种方法,在点击按钮时刷新数据网格视图,而不会对原始代码进行太多更改,我将不胜感激。

您在第二个用户控件中有一个public void Refresh方法,请尝试修改this.Refresh();,称为populate();。这应该调用您在加载时调用的private void populate方法,该方法应该重新加载网格。如果这有帮助,请告诉我。

最新更新