Спасибо, ребята, я работал с помощью ImageButton и назначил ему RowCommand, который вызывает мой метод ForceDownload:
HTML:
<asp:TemplateField HeaderText="Download File">
<ItemTemplate>
<asp:ImageButton ID="ibDownload" runat="server" CommandName="Download" CommandArgument='<%# Bind("path") %>' />
</ItemTemplate>
</asp:TemplateField>
Код позади:
Private Sub gvFileList_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvFileList.RowCommand
If e.CommandName = "Download" Then
Dim myPath = Server.MapPath(e.CommandArgument)
ForceDownload(HttpContext.Current, myPath)
End If
End Sub