Поскольку ViewState отключен, и вы привязываете данные только тогда, когда страница не публикуется, эта строка всегда завершится сбоем:
Dim row As GridViewRow = DirectCast(Gridview1.Rows(e.RowIndex), GridViewRow)
как счетчик на Gridview1.Rows
будет равно 0.
Когда страница отправляется обратно на сервер, ASP.NET необходимо включить ViewState для элемента управления, чтобы он мог воссоздать элементы управления и правильно определить, какие события вызвать,какие значения элементов управления изменились и т. д. Вы должны включить ViewState, и вам нужно будет выяснить, что вызывает ошибку дерева элементов управления.В коде должны быть какие-то другие изменения.
Имейте в виду, что только привязка данных к GridView в Page_Load, когда страница не отправлена обратно, верна, но вы не сможете правильно обработатьсобытия, если вы не включите ViewState на элементе управления.