我对GridView表进行删除或修改时
出现
“索引超出范围。必须为非负值并小于集合大小。
参数名: index” 
的错误
分别在这两句出错“int orderID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);”
“int GoodsNum = Convert.ToInt32(((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString());”
上面那个是在删除代码里,下面那个在修改代码里
那位大大解决一下··

解决方案 »

  1.   

    跟踪一下这句GridView1.Rows[e.RowIndex].Cells[2].Controls[0]得出什么,应该是-1之类的值,很多年前遇到过,忘了怎么解决了
      

  2.   

    你的GridView1 是控件后绑定的DataSource还是控件名称?你这里需要控件的DataSource.应该是e.RowIndex这里出错了。
      

  3.   

    http://www.cnblogs.com/denny402/archive/2010/06/29/1767833.html
      

  4.   

    int orderID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value
    看下e.RowIndex 的值 是多少,应该是这里的问题。
    if e.RowIndex>0 
    {int orderID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value;
    }
    仅供参考。
      

  5.   

    e.RowIndex一直等于0··不会变··还是老样子·
      

  6.   

    - -你说的不明白··“控件后绑定的DataSource还是控件名称"
      

  7.   

    没人回答下e.RowIndex一直等于0·要怎么解决吗
      

  8.   

    这么问 不如参考:http://www.cnblogs.com/maoni/articles/677134.html
      

  9.   


    e.RowIndex的值是事件激发中已经定义的,你无需更改。
    你对GridView表进行删除或修改的操作是不是绑定在单元格更改的事件上面了?基本上只有这个可能出错了。