任何人都可以帮助我避免在DataGridView
上获得重复输出。这是图片Before change和图片After add/edit or delete。
以下是我DataGridView
的加载程序:
private DataTable data()
{
using (OleDbConnection con = new OleDbConnection(inventorydb))
{
using (OleDbCommand com = new OleDbCommand("Select * FROM Items",con))
{
con.Open();
OleDbDataReader reader = com.ExecuteReader();
items.Load(reader);
}
}
return items;
}
void reset()
{
connect.Close();
connect.ConnectionString = inventorydb;
connect.Open();
dataGridView1.DataSource = null;
dataGridView1.Update();
dataGridView1.Refresh();
dataGridView1.DataSource = data();
}
添加并保存更改:
private void save_Click(object sender, EventArgs e)
{
if (mode == "a")
{
connect.Close();
connect.ConnectionString = inventorydb;
connect.Open();
sqlcommand.CommandText = "INSERT INTO Items (SerialID, Brand_Name, Item_Name,Item_Date) VALUES ('" + txtserial.Text + "','" + txtbrand.Text + "', '" + txtitem.Text + "', '" + date + "') ";
sqlcommand.Connection = connect;
OleDbDataReader reader = sqlcommand.ExecuteReader();
MessageBox.Show("Record(s) Saved", "Sample");
}
connect.Close();
reset();
}
答案 0 :(得分:0)
DataTable.Load
默认情况下会将结果添加到现有行。因此,如果您在调用DataTable.Load
之前需要拥有最新记录,则应清除DataTable
,否则新结果将与现有行合并。
因此,使用items
变量DataTable
,您可以使用以下任一选项:
items= new DataTable();
或
items.Clear();
items.AcceptChanges();
使用提供的数据源填充
DataTable
来自数据源的值IDataReader
。如果DataTable
已包含行,则传入 来自数据源的数据与现有行合并。