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 件のコメント:
コメントを投稿