在我的程序中,我在一个表单上有一个dgv。当我从dgv中删除一个条目时,我还想从SQLite数据库中删除该条目,以便它不会重新出现。
我有一个'id'列(PRIMARY KEY AUTOINCREMENT),因此每个项目都是唯一的。
我遇到的问题是在删除行的情况下访问“id”。
以下是一些代码:
DialogResult deleteitem = MessageBox.Show("Delete the selected item?", "Delete Item", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
if (deleteitem == DialogResult.Yes)
{
if (!this.dataGridView1.Rows[this.rowIndex].IsNewRow)
{
SetConnection();
sqlconnection.Open();
this.dataGridView1.Rows.RemoveAt(this.rowIndex);
sqlcmd = new SQLiteCommand("DELETE FROM table1 WHERE id=???", sqlconnection);
sqlcmd.ExecuteNonQuery();
}
}
答案 0 :(得分:0)
首先 - 在从网格中删除行之前,您需要构建SQLLiteCommand。您可以使用上述评论中建议的任一方法。您可以像这样访问DataBoundItem:
MyRowDataType dataRow = (MyRowDataType)this.dataGridView1.Rows[this.rowIndex].DataBoundItem;
然后您可以删除此方式(但您需要知道基础数据的类型并将MyRowDataType更改为您的数据类型):
sqlcmd = new SQLiteCommand("DELETE FROM table1 WHERE id=" + dataRow.ID, sqlconnection);
或者您可以将ID列作为隐藏列添加到DataGridView,并以这种方式访问值:
sqlcmd = new SQLiteCommand("DELETE FROM table1 WHERE id=" + this.dataGridView.Rows[this.rowIndex].Cells["IDColumnName"].Value, sqlconnection);