【问题标题】:C# change cell value of selected datagridview rows in databaseC#更改数据库中选定datagridview行的单元格值
【发布时间】:2017-09-24 08:19:40
【问题描述】:

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

【问题讨论】:

    标签: c# sql winforms datagridview


    【解决方案1】:

    您确实正在使用此行更改 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],但根据您的实施情况可能会有所不同。

    【讨论】:

    • 它有错误先生。它说“'.'附近的语法不正确。
    • AuditID 的类型是什么?在将字符串发送到 AddRecord 函数之前将字符串取出到变量中并检查其值,看看查询是否对您有意义
    • 它的固定先生。我首先将 row.cell[0] 的值放入一个 int 变量,并将该 int 变量用作 ID。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2015-12-05
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多