【问题标题】:How to Reload DataGridView using DataTable.Load(DataReader) without duplicate records如何在没有重复记录的情况下使用 DataTable.Load(DataReader) 重新加载 DataGridView
【发布时间】:2017-02-02 05:19:38
【问题描述】:

谁能帮助我避免在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();     
}

【问题讨论】:

  • 在查询中使用不同的关键字
  • 您能在添加、编辑或删除中显示代码吗?我无法使用提供的代码重现此行为。
  • 我尝试放入按钮让我保存/添加访问权限。

标签: c# .net winforms datagridview datatable


【解决方案1】:

DataTable.Load 默认情况下将结果添加到现有行。所以如果你只需要最新的记录,在调用DataTable.Load之前,你应该清除DataTable,否则新的结果将与现有的行合并。

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

items= new DataTable();

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

DataTable.Load

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

【讨论】:

  • 非常感谢。效果很好,我现在可以完成我的项目了。
  • 最后一个问题,在datagridview上是否有这样的东西-listView1.FullRowSelect = true;这样,一旦他们选择了内容,不仅会选择外壳,还会选择整行,并且将禁用编辑显示在 datagrid 上的单元格?谢谢!
  • 设置FullRowSelect 不会禁用编辑。它只是启用全行选择。如果您在编辑行时遇到任何问题,则可能还有其他问题,例如您可能将ReadOnly 设置为true。如果我的评论没有帮助,那么最好就新问题提出一个新问题,因为问题应该针对单个问题。
  • 您能帮我做这件事吗? stackoverflow.com/questions/39688685/…
  • 我读了这个问题。幸运的是这个问题有一个正确的答案,我还在答案中添加了评论。
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
相关资源
最近更新 更多