Hola, como estas.
Tu problema esta en que no tenes que usar ahí el "gridview2.PageIndex = e.NewPageIndex", borralo de ahí
Lo que tenes hacer para paginar un gridview es en el visual studio y en las propiedad de la grilla modificar para que el paginado este habilitado. Si ejecutas y probas la página veras que ya te aparecen los número de página, lo que no te va a funcionar es que si hace clic en algún número de página no te va a fucionar y te puede dar error. Lo que tenes que hacer es capturar el evento cuando se cambia de página, es decir, " pageindexchangin", esto lo podes ver haciendo clic en tu grilla y ver los eventos.
Una vez que creas el evento ahí agregas el código para cambiar el número de página y actualizar los datos de la grilla, te quedaría algo como:
Protected Sub gridViewPublishers_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs)
gridViewPublishers.DataSource = SortDataTable(CType(gridViewPublishers.DataSource, DataTable), True) gridViewPublishers.PageIndex = e.NewPageIndex
gridViewPublishers.DataBind()
End Sub
Mira en esta pagina te muestra un ejemplo incluso con ordenación:
http://gchandra.wordpress.com/2007/0...asource-vbnet/
Espero te sirva.
Suerte