Set break-point in the beginning of GridView1_RowCommand method. Does it get called at all? Go step-by-step through that method and see if that Convert.ToInt32(...) is throwing the error. You could try something like the following in order to isolate the problem:
Code:
Protected Sub GridView1_RowCommand(...)
Dim r As Int32
Dim dbkey As String
If Not Int32.TryParse(e.CommandArgument, r) Then
Throw New Exception("CommandArgument was not of integer type")
End If
If Not Int32.TryParse(GridView1.DataKeys(r).Value, dbkey) Then
Throw New Exception("GridView1.DataKeys(r).Value was not of integer type")
End If
End Sub