C#更改数据库中所选datagridview行的单元格值
问题描述:
您好,我想更改datagridview和数据库中所有选定行的列,但它正在更改所有数据,而不仅仅是选定的行。C#更改数据库中所选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;
}
以及我想如何更改其列值。但它正在改变数据库中的所有行,而不仅仅是所选的行。
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'");
}
}
答
你的确改变数据库中的所有行这一行:
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]
但根据您的实现可能是不同的。
它有一个错误先生。它说“不正确的语法附近”' – StudentDev
'AuditID'的类型是什么?在将字符串发送到'AddRecord'函数并检查它的值之前,将字符串取出并查看它的值,看看查询对您是否有意义 –
其固定的先生,我首先把row.cell [0]的值放到一个int变量中,并将该变量用作ID,谢谢。 – StudentDev