Asp.net 是否手动从gridview绑定中删除行?

Asp.net 是否手动从gridview绑定中删除行?,asp.net,sql,vb.net,gridview,Asp.net,Sql,Vb.net,Gridview,我有一个gridview,它绑定到一个允许下载文件的表。该表包括: tableid为int 文件名为字符串 文件路径为字符串 删除(在gridview中添加列) 此删除不是自动的,而是编码的。我希望用户单击delete,选定的行将被删除。这么简单,但我似乎无法获取要删除的行的ID。这就是我所做的: Try 'Get the Image_Id from the DataKeyNames Dim imgId As Integer = Convert.ToInt

我有一个gridview,它绑定到一个允许下载文件的表。该表包括:

  • tableid为int
  • 文件名为字符串
  • 文件路径为字符串
  • 删除(在gridview中添加列)
此删除不是自动的,而是编码的。我希望用户单击delete,选定的行将被删除。这么简单,但我似乎无法获取要删除的行的ID。这就是我所做的:

  Try
        'Get the Image_Id from the DataKeyNames
        Dim imgId As Integer = Convert.ToInt32(gvDetails.DataKeys(e.RowIndex).Value)


        Dim cmd As New SqlCommand("delete from FilesTable where id=@id", con)
        cmd.Parameters.AddWithValue("@id", imgId)
        cmd.CommandType = CommandType.Text
        con.Open()
        cmd.ExecuteNonQuery()
    Catch ex As Exception
        ScriptManager.RegisterStartupScript(Me, Me.[GetType](), "Message", "alert('Error occured : " & ex.Message.ToString() & "');", True)
    End Try
但我一直得到一个错误,字符串输出无法转换为整数:

发生错误:输入字符串的格式不正确

请帮忙

以下是栅格视图的绑定方式:

Private Sub BindGridviewData() 
    Try 
        con.Open() 
        Dim cmd As New SqlCommand("select * from FilesTable", con) 
        Dim da As New SqlDataAdapter(cmd) 
        Dim ds As New DataSet() 
        da.Fill(ds) 
        con.Close() 
        gvDetails.DataSource = ds 
        gvDetails.DataBind() 

    Catch ex As Exception 
        Response.Write(ex.Message) 
    End Try 
End Sub

我花了很长时间才找到答案,这是一个简单的问题:

而不是: Dim imgId As Integer=Convert.ToInt32(gvDetails.DataKeys(e.RowIndex).Value)

我把它改成:


Dim imgId As Integer=Int32.Parse(gvDetails.Rows(e.RowIndex).Cells(0).Text)

您是否尝试过调试并查看
gvDetails.DataKeys(e.RowIndex).value的值是多少?我希望它不是可以转换成整数的东西。如何绑定网格视图?私有子BindGridviewData()尝试将con.Open()Dim cmd作为新的SqlCommand(“select*from FilesTable”,con)Dim da作为新的SqlDataAdapter(cmd)Dim ds作为新的DataSet()da.Fill(ds)con.Close()gvDetails.DataSource=ds gvDetails.DataBind()捕获ex作为异常响应。Write(ex.Message)End Try End SubYes我做了,值为=0,它不应该为该值。表
FilesTable
是否有主键?我目前无法测试,但我怀疑DataKeys不会自动设置,除非绑定到它的表具有主键?您可能需要在调用
Databind()
Yes之前设置它的被调用id,正如您在上面的代码中所看到的!!