I would convert your Bound field to a Template Field with a LinkButton to display value rather than using a HyperLinkField.
You can then set the CommandName of the link button - you could use Select in which case you can use the SelectedIndexChanged event. If you use a different CommandName use the RowCommand event and test e.CommandName to check which command (and therefore column) raised the event.
If you use the SelectedIndexChanged event it's easy to get the row index e.g. GridView1.SelectedIndex
If you use RowCommand there are various ways to retrieve the rowindex, I generally use the RowDataBound event of the GridView and FindControl to find the linkbutton, then set button's CommandArgument to the RowIndex. e.CommandArgument is then available in the RowCommand event. HTH.