问题描述
我把dataGridView1绑定到textbox,当我删除datagridview1某行记录后,再在dataGridView1_CellClick事件写dataGridView1.Rows[dataGridView1.CurrentRow.Index].Selected=true;然后把当前选中行绑定到textbox就出错"不能通过已删除的行访问该行的信息。"应该是行索引变了的问题,怎样解决
解决方案
解决方案二:
dataGridView1.Rows[dataGridView1.CurrentRow.Index-1].Selected=true;
解决方案三:
由于当前行已经删除掉了,你再选择该行肯定是不行的(该行已经不存在了),可以判断选择上一行(当删除的不为第一行时).
解决方案四:
关键是可能在datagridview用户自定义删除啊,可能两三百条记录删除其中的一部分呢,
解决方案五:
判断:_currentIndex为删除前所选中的索引if(dataGridView1.Rows.Count>0){dataGridView1.ClearSelection();当选中的索引大于或等于所有行时,说明删除的为最后行,所以在这里要减1if(_currentIndex>=dataGridView1.Rows.Count){dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells["HdayID"].Selected=true;}else{dataGridView1.Rows[_currentIndex].Cells["HdayID"].Selected=true;}}
解决方案六:
从后往前遍历删完一次刷新一次再遍历
解决方案七:
privatevoiddelButton_Click(objectsender,EventArgse){dataGridView1.Rows.Remove(dataGridView1.CurrentRow);dataGridView1.Rows[dataGridView1.CurrentRow.Index].Selected=true;prdtcode.text=ds.Tables[0].Rows[dataGridView1.CurrentRow.Index]["prdtcode"].ToString().Trim();unittext.Text=ds.Tables[0].Rows[dataGridView1.CurrentRow.Index]["m1_baunit"].ToString().Trim();}}这是删除事件,删除之后再选择刚删除行的下一行就出现"不能通过已删除的行访问该行的信息"当然数据也不能绑定到textbox,如果不删除的话便可以绑定
解决方案八:
datatalbe删除后只是状态改变了,其实索引还存在的,而datagridview的索引就与datatable不一致了此时再取datagridview删除后的一些行值就会出现问题,怎样解决