2017-09-24 27 views
0

こんにちは私はdatagridviewとデータベース内のすべての選択された行の列を変更したいが、選択された行だけでなくすべてのデータを変更している。データベース内の選択されたdatagridview行のC#値を変更する

これは、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

あなたは確かにこのラインで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]を使用しますが、それはあなたの実装に応じて異なる場合があります。

+0

エラーがあります。それは "不適切な構文 'の近くにあります。 – StudentDev

+0

' AuditID'の型とは何ですか?文字列を変数に渡してから、 'AddRecord'関数に渡してその値を調べ、クエリが意味をなさないかどうかを確認してください –

+1

その私は最初にrow.cell [0]の値をint変数に置き、そのint変数をIDとして使用しました。ありがとうございます。 – StudentDev

関連する問題