2017-09-24 122 views
0

您好,我想更改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'"); 
     } 
    } 

回答

0

你的确改变数据库中的所有行这一行:

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]但根据您的实现可能是不同的。

+0

它有一个错误先生。它说“不正确的语法附近”' – StudentDev

+0

'AuditID'的类型是什么?在将字符串发送到'AddRecord'函数并检查它的值之前,将字符串取出并查看它的值,看看查询对您是否有意义 –

+1

其固定的先生,我首先把row.cell [0]的值放到一个int变量中,并将该变量用作ID,谢谢。 – StudentDev

相关问题