C# 刷新datagridview时复制旧数据
我已经可以将新数据添加到数据库并通过datagridview显示该数据库,并且每当我单击“添加”按钮(将新数据添加到数据库)时,我都会命令刷新datagridview。但它是用新数据复制旧数据 以下是添加新数据并刷新datagridview后重复显示的屏幕截图: 在上图中,ID为“16”的重复数据,每当我输入新值并将其插入数据库时,它会将新(当前)值添加到数据库中,但旧值将被复制。因此,我不得不退出这个项目,重新启动它。但是,有没有其他方法可以解决这个问题(在向数据库添加新数据并刷新datagridview后,旧数据不会被复制) 这是我的密码:C# 刷新datagridview时复制旧数据,c#,winforms,ms-access,datagridview,C#,Winforms,Ms Access,Datagridview,我已经可以将新数据添加到数据库并通过datagridview显示该数据库,并且每当我单击“添加”按钮(将新数据添加到数据库)时,我都会命令刷新datagridview。但它是用新数据复制旧数据 以下是添加新数据并刷新datagridview后重复显示的屏幕截图: 在上图中,ID为“16”的重复数据,每当我输入新值并将其插入数据库时,它会将新(当前)值添加到数据库中,但旧值将被复制。因此,我不得不退出这个项目,重新启动它。但是,有没有其他方法可以解决这个问题(在向数据库添加新数据并刷新datag
private void ViewDatabase(object sender, EventArgs e)
{
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
string query = "SELECT * FROM [Table]";
conn.Open();
using (OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn))
{
adapter.Fill(ds, "Table");
dataGridView1.DataSource = ds.Tables[0];
}
conn.Close();
}
}
private void Add(object sender, EventArgs e)
{
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
string query = "INSERT INTO [Table] ([ProductCode], [Quantity], [Description], [Price]) VALUES (@ProductCode, @Quantity, @Description, @Price)";
conn.Open();
using (OleDbCommand cmd = new OleDbCommand(query, conn))
{
cmd.Parameters.Add("@ProductCode", System.Data.OleDb.OleDbType.Integer);
cmd.Parameters["@ProductCode"].Value = this.numericTextBox1.Text;
cmd.Parameters.Add("@Quantity", System.Data.OleDb.OleDbType.Integer);
cmd.Parameters["@Quantity"].Value = this.numericUpDown1.Value;
cmd.Parameters.Add("@Description", System.Data.OleDb.OleDbType.VarChar);
cmd.Parameters["@Description"].Value = this.textBox3.Text;
cmd.Parameters.Add("@Price", System.Data.OleDb.OleDbType.Integer);
cmd.Parameters["@Price"].Value = this.textBox4.Text;
cmd.ExecuteNonQuery();
if (choice.comboBox1.Text == "English")
{
System.Media.SoundPlayer sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
sound.Play();
DialogResult dialogResult = MessageBox.Show("Added Successfully!", "Success", MessageBoxButtons.OK);
if (dialogResult == DialogResult.OK)
{
ViewDatabase(sender, e);
ClearTextBoxes(sender, e);
}
}
插入这个
dataGridView1.DataSource = null;
这里
编辑:
移动
在嵌套的using块之外。hai ahsan sallem,我已经通过添加
dataGridView.DataSource=null尝试了您的代码代码>在下面的适配器中。填充(ds,“表格”)
,但它仍然与旧数据重复。请尝试此适配器。填充(ds,“表格”);dataGridView1.DataSource=null;dataGridView1.Refresh();并将此行“dataGridView1.DataSource=ds.Tables[0];”移到嵌套它的using块之外。不,它仍然是cannote@Ahsan Saleem
adapter.Fill(ds, "Table");
//here
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.DataSource = ds.Tables[0];