//将for循环改成这样
for (int i = 0; i
//这个if语句也要改一下
if ((bool)dataGridView1.SelectedRows[i].Cells[0].EditedFormattedValue == true)
{ //添加图书信息SQL语句
sb.Append("delete from bookinfo where id='"
+ dataGridView1.SelectedRows[i].Cells[1].Value.ToString() + "';");
}
DataGridView中选中的行总是会<=总行数的
或者改成下面这样也可以
for (int i = 0; i
//这个if语句也要改一下
if ((bool)dataGridView1.Rows[i].Cells[0].EditedFormattedValue == true)
{ //添加图书信息SQL语句
sb.Append("delete from bookinfo where id='"
+ dataGridView1.Rows[i].Cells[1].Value.ToString() + "';");
}
我觉得可能是你的逻辑有点问题,上面循环的是数据集合的行,但是下面取得是选中的行,如果你没有选择任何行的话,可能就会报这个错误吧。
i的范围是从0到最后1行。
也许没有选中全部行,譬如说只选中了1,2行,
dataGridView1.SelectedRows,就是1个维数为2的数组,
那么i=3时,dataGridView1.SelectedRows[3],这个数组的索引就超出了范围
datagridview默认的是行首选择,也就是说整行都高亮才称为“选中”,重新选择试试。
另外,应该先判断选中的行数是否大于0.
dataGridView1.SelectedRows[i].Cells[1].Value.ToString()
改为
dataGridView1.Rows[i].Cells[1].Value.ToString()