先选最后一行再选其它行,老是出错“位置3处没有行”这是怎么回事?代码如下:
private void toolStripDelBtn_Click(object sender, EventArgs e)
{
    Int32 selectedRowCount = branchGridView.Rows.GetRowCount  
    (DataGridViewElementStates.Selected);
    
    DataRowView[] selectRow = new DataRowView[selectedRowCount];    if (selectedRowCount != 0)
    {
       if (this.branchGridView.AreAllCellsSelected(false))
            this.managerDataSet.部门表.Clear();
       else
            for (int i = 0; i < selectedRowCount; i++)
            {
                selectRow[i] = this.managerDataSet.部门表.DefaultView 
                  [this.branchGridView.SelectedRows[i].Index];
             }
     }     if (selectRow.Length != 0)
        for (int j = 0; j < selectRow.Length; j++)
        {
            selectRow[j].Delete();
        }
}

解决方案 »

  1.   

    if (selectRow.Length != 0)
            for (int j = selectRow.Length - 1; j >= 0 ; j--)
            {
                selectRow[j].Delete();
            }
    从后往前删
      

  2.   

    你的方法太繁琐了,如果是多行删除如下即可
    while( yourDataGrid.SelectedRows.Count > 0 )
    {
         DataRowView drv = yourDataGrid.SelectedRows[0].DataBoundItem as DataRowView;
         drv.Delete();//Delete row here
    }把这个放到你的buttonclick事件中去执行即可
      

  3.   

    不推荐在VIEW上进行DAL操作,因为VIEW的更新会让VIEW的底层主表进行更新,可能是底层表的变化导致重新生成的VIEW中不存在第3行以后的数据
    VIEW的用处是用来集合多表数据的,多用来查询,DAL操作不安全,所有大部分的VIEW有约束,ONLYREAD.
      

  4.   

    Knight94(愚翁),你的代码确实有用,只是不知道执行效率会怎样?先谢了!