Sono incappato in questa pagina di MSDN
https://msdn.microsoft.com/it-it/lib...v=vs.110).aspx
che mi ha a sua volta procurato un "fastidio".

Io infatti andavo spedito a recuperare il dataitem della gridview con la scrittura
codice:
Protected Sub gridview1_rowdatabound(sender As Object, ByVal e As GridViewRowEventArgs) Handles gridview1.RowDataBound
Dim drv As DataRowView = CType(e.Row.DataItem, DataRowView)
.......
come da esempio, tranne che quando il datasource associato al gridview ha 0 records, il gridview non ha righe e e.Row.DataItem è nothing e quindi quella scrittura genera eccezione!

Si risolve facilmente verificando a monte con un if che e.Row.DataItem sia diverso da nothing
codice:
Protected Sub gridview1_rowdatabound(sender As Object, ByVal e As GridViewRowEventArgs) Handles gridview1.RowDataBound
        If e.Row.DataItem IsNot Nothing Then
            Dim drv As DataRowView = CType(e.Row.DataItem, DataRowView)
.....
ma 'sti farlocchi in Microsoff un esempio un po' più generico non potevano?