写了一段C#代码,总是出现问题,是不是dataGridView1.SelectedRows[i].Cells[1].Value.ToString() 有问题

2024-11-11 06:31:50
推荐回答(5个)
回答1:

//将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() + "';");
}

回答2:

我觉得可能是你的逻辑有点问题,上面循环的是数据集合的行,但是下面取得是选中的行,如果你没有选择任何行的话,可能就会报这个错误吧。

回答3:

i的范围是从0到最后1行。
也许没有选中全部行,譬如说只选中了1,2行,
dataGridView1.SelectedRows,就是1个维数为2的数组,
那么i=3时,dataGridView1.SelectedRows[3],这个数组的索引就超出了范围

回答4:

datagridview默认的是行首选择,也就是说整行都高亮才称为“选中”,重新选择试试。
另外,应该先判断选中的行数是否大于0.

回答5:

dataGridView1.SelectedRows[i].Cells[1].Value.ToString()
改为
dataGridView1.Rows[i].Cells[1].Value.ToString()