我的datagrid设置了删除项在左边
代码写在Private Sub DataGrid1_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.DeleteCommand
        myconnection = New SqlConnection,可是运行出错,帮我看看错在哪里
错误:索引超出范围。必须为非负值并小于集合大小。参数名: index myconnection = New SqlConnection
        myconnection.ConnectionString = cn
        Dim del1 As String
        Dim delcmd As SqlCommand
        del1 = "delete from rms where ItemNo=" & DataGrid1.DataKeys(e.Item.ItemIndex)
        delcmd = New SqlCommand(del1, myconnection)
        myconnection.Open()
        delcmd.ExecuteNonQuery()
        myconnection.Close()

解决方案 »

  1.   

    <asp:datagrid id="DataGrid1" DataKeyField="Inv_content_id".....
    楼主DataKeyField忘设置了
      

  2.   

    我加进去了 DataKeyField="ItemNo"
    还是不行哦
    怎么办呢?
      

  3.   

    出现的是什么错误,我用的是的是VB.net语言编写,是C#.net   可能是你的主键没有取出来吧!
    你看下我的代码:
    string mainkey=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
    SqlConnection con=new SqlConnection("server=.;database=cool;trusted_connection=yes");
    con.Open();
        SqlCommand cmd=new SqlCommand("delete from student where stunum='"+mainkey+"'",con);
    cmd.ExecuteNonQuery();
    this.datacon();
      

  4.   

    那这样转换下思路,你将这个itemno列也加入绑定列里面,但是隐藏起来
    那么你只要在原来代码的基础上更改& DataGrid1.DataKeys(e.Item.ItemIndex)
    --->e.item.cells[i].text就行了
      

  5.   

    上面的方法都试过了,不行哦,还是那个错
    错误:索引超出范围。必须为非负值并小于集合大小。参数名: index
      

  6.   

    首先判断一下e的行不是head and footer
      

  7.   

    你把这个datagrid行的ID取出来。放在一个变量里面,在把那个变量放在select语句里看看
      

  8.   

    我也出现过类试的错误跟你一样,你的那个表是不是主键含有多个字段啊
    如果是的话建议你在那个表加个主键,把DataKeyField改成你加的主键就解决了