Creo que estas un poco equivocado, pero el SelectedRow ¿te trae datos? creo que solo funcionaba en el evento SelectedIndexChanged. El método que utilizas (RowCommand) es el más apropiado, te sugiero que al Command le agregues el CommanArgument que tendrá como valor el dni, algo así (todo dentro del GridView):
Código ASP:
Ver original<asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="False" CommandName="modificacion" CommandArgument="<%#Eval("dni")%>" ImageUrl="../../images/Iconos/edit_16x16.png" Text="" />
de esta forma podrás usar el valor:
Código ASP:
Ver originalProtected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
If (e.CommandName = "eliminacion") Then
Response.Redirect("delete_pac.aspx?dni=" & e.CommandArgument.ToString())
End If
End Sub
Otra cosa que podés utilizar es el PostBackUrl de los botones de la misma forma:
Código ASP:
Ver original<asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="False" ImageUrl="../../images/Iconos/edit_16x16.png" Text="" PostBackUrl='<%# "~/delete_pac.aspx?dni="&Eval("dni").toString() %>' />
Probablemente me haya equivocado con la sintaxis (programo en C#).
Probalo y nos avisas.
Saludos...