string strConnection="Data Source=sjk;user id=jxke;Password=jxkh";
OracleConnection myConn=new OracleConnection(strConnection);string deleteCmd="delete from DD where ID= @ID";
OracleCommand myComm= new OracleCommand (deleteCmd,myConn);myComm.Parameters.Add(new OracleParameter("@ID",OracleType.VarChar,10));
myComm.Parameters["@ID"].Value  =DataGrid1.DataKeys[(int)e.Item.ItemIndex];myConn.Open();
 
myComm.ExecuteNonQuery();myConn.Close();运行删除提示“索引超出范围,必须为非负值并小于集合大小”
请各位强人指教,哪里出错,应如何修改???

解决方案 »

  1.   

    myComm.Parameters["@ID"].Value  =DataGrid1.DataKeys[(int)e.Item.ItemIndex -1];
      

  2.   

    你可以在DataGrid控件中的事件中用参数e就可以了。
      

  3.   


    myComm.Parameters["@ID"].Value  =DataGrid1.DataKeys[(int)e.Item.ItemIndex];
    改成
    myComm.Parameters["@ID"].Value  =DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
    试试
      

  4.   


    myComm.Parameters["@ID"].Value  =DataGrid1.DataKeys[(int)e.Item.ItemIndex];
    改为:
    myComm.Parameters["@ID"].Value  =DataGrid1.Items[4].Cells[0].Text;
    前一个4是表示datagrid的列数(是从0开始的),后一个0表示ID所在的列数,这样指定后就不会出这样的错了!
      

  5.   

    你删除时是在分页DATAGRID的第一行吗
      

  6.   

    肯定是你的e.item.itemindex有问题
    这个程序你放哪儿了,
    你跟踪一下你的e.item.itemindex值,看你取的对不对
      

  7.   

    我在datagrid属性里建的“删除”上面是全部程序