如何使用没有重复记录的DataTable.Load(DataReader)重新加载DataGridView

时间:2016-09-24 12:07:12

标签: c# .net winforms datagridview datatable

任何人都可以帮助我避免在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();     
}

1 个答案:

答案 0 :(得分:0)

DataTable.Load默认情况下会将结果添加到现有行。因此,如果您在调用DataTable.Load之前需要拥有最新记录,则应清除DataTable,否则新结果将与现有行合并。

因此,使用items变量DataTable,您可以使用以下任一选项:

items= new DataTable();

items.Clear();
items.AcceptChanges(); 
  

DataTable.Load

     

使用提供的数据源填充DataTable来自数据源的值   IDataReader。如果DataTable已包含行,则传入   来自数据源的数据与现有行合并。