您好我想更改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'");
}
}
答案 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]
,但根据您的实施情况,它可能会有所不同。