C#更改数据库中所选datagridview行的单元格值

时间:2017-09-24 08:19:40

标签: c# sql winforms datagridview

您好我想更改datagridview和数据库中所有选定行的列,但它正在更改所有数据,而不仅仅是所选行。

这是填充datagridview的方式。

  private void dgvAuditAllSettings()
    {
        crud.FillDataGrid("Select AuditID,DateTime,Name,Position,Action,Status from AuditTrail where Status = 'Active' order by DateTime DESC", ref dgvAuditAll);
        dgvAuditAll.Columns[0].Width = 60;
        dgvAuditAll.Columns[1].Width = 200;
        dgvAuditAll.Columns[2].Width = 150;
        dgvAuditAll.Columns[3].Width = 140;
        dgvAuditAll.Columns[4].Width = 470;
    }

以及我想如何更改其Column值。但它正在改变数据库中的所有行而不仅仅是所选行。

 private void btnAuditSendArchives_Click(object sender, EventArgs e)
    {
        foreach (DataGridViewRow row in dgvAuditAll.SelectedRows)
        {
         // row.Cells[5].Value = "Archived";
            crud.AddRecord("Update AuditTrail set Status = 'Archive'");
        }
    }

1 个答案:

答案 0 :(得分:0)

您确实使用以下行更改了DB中的所有行:

crud.AddRecord("Update AuditTrail set Status = 'Archive'");

您没有指定该行的ID,没有where子句,因此它将更新所有行。

尝试添加id,它应该是这样的:

crud.AddRecord($"Update AuditTrail set Status = 'Archive' Where AuditID = {row.Cells[0]}");

我使用的是row.Cells[0],但根据您的实施情况,它可能会有所不同。