Hola,
Tienes razón a mi tampoco me ha funcionado de esta forma, bueno he hecho un método con el cual se corrige el problema, sólo has de añadirlo, se tiene que ejecutar después de cada evento ItemDataBound, como indica el Handles.
Código:
Protected Sub articleList_Link(ByVal rutaFichero As Object, ByVal e As DataGridItemEventArgs) Handles articleList.ItemDataBound
If e.Item.Cells(0).Controls.Count > 0 Then
Dim a As HyperLink
a = CType(e.Item.Cells(0).Controls(0), HyperLink)
a.NavigateUrl = a.NavigateUrl.Replace(Server.MapPath(""), "~")
End If
End Sub
No estoy muy puesto en VB, pero espero que esto te sirva.
Saludos y buen fin de sema!! Besets!