未选中的itemindex就是-1,你可以调试一下,看看传过来的是否=-1

解决方案 »

  1.   

    报错提示说索超出界限。。然后显示item.itemindex的值不能为负数。。
    这个问题还是不能解决。。
      

  2.   

    你没有设置 DataGrid的 DataKeyField属性
      

  3.   

    DataKeyField属性
    设置后DATABIND()出错!!!!!!!!!!
      

  4.   

    应该是楼主调用e.Item.ItemIndex的时机不正确,楼主是在哪个事件里调用的?
      

  5.   

    因为你没判断行的类型是否是数据行,还是交错行,页眉,页脚!
    在程序运行到页眉,页脚时e.item.itemindex就会超出索引解决方法一、请在程序中判断一下行类型
    解决方法二、直接try掉,这个方法比较偷懒,不过也可以解决问题
      

  6.   

    索引为-1就是Items没找到这个Item
      

  7.   

    换成this.datagrid.DataKeyField[(int)e.item.itemindex]
    datagrid属性中的DataKeyField中设为你的判断唯一的字段,如ID等.
      

  8.   

    没有设置 DataGrid的 DataKeyField属性
      

  9.   

    在aspx的DataGrid中添加主键字段
    <asp:datagrid id="dtat" Runat="server" DataKeyField="ID"</asp:datagrid>
    这里的ID是你数据库里的主键
    获取索引值
    int id = Convert.ToInt32(this.dbgpreplession.DataKeys[e.Item.ItemIndex].ToString());索引值为-1 是没有找到该行 你调试下看看..
      

  10.   

    没有设置 DataGrid的 DataKeyField属性
      

  11.   

    你这个代码是用在SelectedIndexChanged事件处理方法里的吧.