索引超出范围。必须为非负值并小于集合大小。参数名: index 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index源错误: 
行 126:    for(int i=0;i<DataGrid3.Columns.Count;i++)
行 127:    {  if(e.Item.ItemIndex>-1)
行 128:    ((CheckBox)this.DataGrid3.Items[i].Cells[2].FindControl("Cck")).Enabled = false;
行 129:    }
行 130:    }
 -----调用的函数
public void get_cor(Object o,DataGridItemEventArgs e)
{   if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
      { 
                  DataRowView rv = (DataRowView)e.Item.DataItem;
   string  cy = rv.Row.ItemArray[1].ToString();
     if(cy=="已使用")
       { for(int i=0;i<DataGrid3.Columns.Count;i++)
    {  if(e.Item.ItemIndex>-1)
((CheckBox)this.DataGrid3.Items[i].Cells[2].FindControl("Cck")).Enabled = false;
    }
       }

   }
}
其中DataKeyfield 已设置 

解决方案 »

  1.   

    e.Item.ItemIndex
    断点看看是多少呀!!
      

  2.   

    for(int i=0;i<DataGrid3.Columns.Count;i++)//这里的i是Column的个数(CheckBox)this.DataGrid3.Items[i]//这里的i访问Items当然会报错~~~~
      

  3.   


    if(e.Item.ItemIndex>-1)
     { for(int i=0;i<DataGrid3.Columns.Count;i++)
     {
     ((CheckBox)this.DataGrid3.Items[i].Cells[2].FindControl("Cck")).Enabled = false;
     }
    }
      

  4.   

    if(e.Item.ItemIndex>-1)
     { for(int i=0;i<DataGrid3.items.Count;i++)
     {
     ((CheckBox)this.DataGrid3.Items[i].Cells[2].FindControl("Cck")).Enabled = false;
     }
    }