最近在写一个Winform程序时遇到一个dataGridView在右键菜单删除记录时的问题,写下来备份一下
先看一删除代码:
if (MessageBox.Show("删除后不可恢复,是否真的删除!", "删除", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)==DialogResult.Yes) { sqlcom.CommandText = "delete from XX where ID=@id"; sqlcom.Parameters.AddWithValue("@id", dataGridView.CurrentRow.Cells[0].Value.ToString()); sqlcom.ExecuteNonQuery(); sqlcom.Parameters.Clear(); updata(); }
很简单的一段代码,但是删除的结果却不是预期的,最后发现问题出在了dataGridViewZFTX.CurrentRow.Cells[0].Value.ToString()这个地方如下图:
在dataGridView中黑色箭头标记的才是当前行CurrentRow,蓝色标记的才是所选行SelectedRows,改成
sqlcom.Parameters.AddWithValue("@id", dataGridView.SelectedRows[0].Cells[0].Value.ToString());
就可以得到正确的结果
这只是单行删除的时候容易出现的问题,多行选择道理一样。