2024年5月8日水曜日

C# GridViewの新規データ追加の方法について

  GridViewに新規にデータ追加する方法は、よく使う機能でありながら、ネット上で参考例を見つけられなかったので、試行錯誤しながら実装してみた。


 private void dataGridView5_CellEndEdit(object sender, DataGridViewCellEventArgs e)
Class1 sm = new Class1(cstring, this);
sm.gvUpdate(e);
ssmFlg = true; //trueのときLeaveイベントでGridViewの更新等を行うため利用(本ブログ内の「ChatGPTも気づけなかったバグ」という投稿を参照)
}


Class1側:
 public void gvUpdate(DataGridViewCellEventArgs e)
 {
         if (fm1.dataGridView5.Rows[e.RowIndex].Cells[0].Value != null)
         { //1列目に番号があれば、Update
             int editedRowIndex = int.Parse(fm1.dataGridView5.Rows[e.RowIndex].Cells[0].Value.ToString());
             int editedColumnIndex = e.ColumnIndex;
             object editedCellValue = fm1.dataGridView5.Rows[e.RowIndex].Cells[editedColumnIndex].Value;
             UpdateDatabaseWithCellEdit(editedRowIndex, editedColumnIndex, editedCellValue);//database 更新
         }
         else
         {//1列目に番号がなく、すべての列のデータが入力済みならInsert
             if(fm1.dataGridView5.Rows[e.RowIndex].Cells[1].Value!=null && fm1.dataGridView5.Rows[e.RowIndex].Cells[2].Value != null)
             {
                 InsertDb(fm1.dataGridView5.Rows[e.RowIndex]);  //2つのデータ入力終わったら追加
             }
         }
}


public void InsertDb(DataGridViewRow row)
{
    using (var connection = new SQLiteConnection(cst))
    {
        connection.Open();
        biko = row.Cells[1].Value.ToString();
        yomi= row.Cells[2].Value.ToString();
        var sql = "INSERT INTO Biko (biko,yomi) VALUES('" + biko + "','" + yomi + "')";
        using (var command = new SQLiteCommand(sql, connection))
        {
            command.ExecuteNonQuery();
        }
        connection.Close();
    }
}


0 件のコメント:

コメントを投稿