索引超出范围。必须为非负值并小于集合大小。参数名: index 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index源错误: 
行 60: 
行 61:cmd.Parameters.Add("@id",SqlDbType.Int);
行 62:cmd.Parameters["@id"].Value=(int)this.DataGrid1.DataKeys[(int)e.Item.ItemIndex];
行 63: 
行 64:cmd.ExecuteNonQuery();
 
哪为高手帮忙解答一下!非常感谢!

解决方案 »

  1.   

    cmd.Parameters["@id"].Value=(int)this.DataGrid1.DataKeys[(int)--这个Int取消e.Item.ItemIndex];
    cmd.Parameters["@id"].Value=(int)this.DataGrid1.DataKeys[e.Item.ItemIndex];
      

  2.   

    int id = Int32.Parse(e.Item.Cells[0].Text);你这样试试看
      

  3.   

    检查一下Item.ItemIndex的值
    ------说错了莫怪。
      

  4.   

    我觉得应该是=(int)this.DataGrid1.DataKeys[(int)e.Item.ItemIndex];这个没有值。你调试的时候看看它究竟=几
      

  5.   

    不好意思
      我说的是GridView的
    DataGrid用DataKeyField
      

  6.   

    (int)this.DataGrid1.DataKeys[(int)e.Item.ItemIndex]这个值为0,
    是不是值没有传进去啊?
      

  7.   

    应该是DataKeyName没指定主键吧?