C# 在窗口应用程序中更新datagridview

C# 在窗口应用程序中更新datagridview,c#,datagridview,C#,Datagridview,我有一个表,有6列ID,a,B,C,D和E。ID是主键。 第三方应用程序不断更新D列和E列,并且 向表中添加新行 我想向datagridview控件显示此表。我试图在5秒后更新它。到目前为止,我已经尝试: 表可能有3-100条记录 //dt是一个包含新数据的数据表 //dtPos是当前绑定到datagridview的DataTable foreach (DataRow r in dt.Rows) { dtPos.DefaultView.RowFilter = "ID = '" + r["

我有一个表,有6列ID,a,B,C,D和E。ID是主键。 第三方应用程序不断更新D列和E列,并且 向表中添加新行

我想向datagridview控件显示此表。我试图在5秒后更新它。到目前为止,我已经尝试:

表可能有3-100条记录

//dt是一个包含新数据的数据表

//dtPos是当前绑定到datagridview的DataTable

foreach (DataRow r in dt.Rows)
{
    dtPos.DefaultView.RowFilter = "ID = '" + r["ID"].ToString() + "'";
    if (dtPos.DefaultView.Table.Rows.Count > 0)
    {
        dtPos.DefaultView.Table.Rows[0]["D"] = r["D"];
        dtPos.DefaultView.Table.Rows[0]["E"] = r["E"];
    }
    else
    {
        dtPos.Rows.Add(r);
    }
}

这似乎没有如预期的那样奏效。有更好的主意吗?

您好,我建议您在gridview中执行上述任务,这样您就可以立即执行任务,而无需在表中执行任务,然后将其分配回datagridview。 dgv具有“添加行”方法,因此可以直接在dgv中添加行

当需要添加新行时,请这样使用

dgv.Rows.Add(1,2,3,4,4,5);
当你需要改变单元格的值时

dgv.rwos[roindex].cells[cellindex].value = xxx; //your new value;

这可以帮助你发布更多代码,你是如何每5秒更新一次网格的。这个表在数据库中,你以5秒的间隔定期查询数据库。我们不需要将它分配回datagridview。它会被更改,因为它与该数据绑定。我的代码比你建议的更有效。