C# 如何使用DataTable.Load(DataReader)在没有重复记录的情况下重新加载DataGridView

C# 如何使用DataTable.Load(DataReader)在没有重复记录的情况下重新加载DataGridView,c#,.net,winforms,datagridview,datatable,C#,.net,Winforms,Datagridview,Datatable,有人能帮助我如何避免在DataGridView上获得重复的输出吗。这是图像和图像 这是myDataGridView的加载程序: private DataTable data() { using (OleDbConnection con = new OleDbConnection(inventorydb)) { using (OleDbCommand com = new OleDbCommand("Select * FROM Items",con))

有人能帮助我如何避免在
DataGridView
上获得重复的输出吗。这是图像和图像

这是my
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();     
}
默认情况下,将结果添加到现有行。因此,如果您只需要拥有最新的记录,在调用
DataTable.Load
之前,您应该清除
DataTable
,否则新结果将与现有行合并

因此,对于
变量,即
数据表
,您可以使用以下任一选项:

items= new DataTable();

使用提供的
IDataReader
。如果
数据表
已经包含行,则传入的 数据源中的数据与现有行合并


在查询中使用不同的关键字您可以在添加、编辑或删除中显示代码吗?我无法使用提供的代码重现此行为。我尝试输入按钮以保存/添加access上的项目。非常感谢。这很好,我现在可以完成我的项目了;这样,一旦他们选择了一个内容,不仅会选择一个shell,还会选择整行,并且会禁用编辑datagrid上显示的单元格?谢谢设置
FullRowSelect
不会禁用编辑。它只是启用整行选择。如果在编辑行时遇到任何问题,则可能存在其他问题,例如可能将
ReadOnly
设置为true。如果我的评论没有帮助,那么最好就新问题问一个新问题,因为这个问题应该针对一个问题。先生,你能在这方面帮助我吗。我读了这个问题。幸运的是,这个问题有一个正确的答案,我还对答案添加了一条评论。
items.Clear();
items.AcceptChanges();