Я не уверен, что вы думаете
var dt = new DataTable();
dt = GridView1.DataSource as DataTable;
делает, но присваивает ноль dt
(потому что GridView1.DataSource
равно нулю)
Попробуйте:
var dt = GridView1.DataSource as DataTable;
if (dt == null)
{
dt = new DataTable();
GridView1.DataSource = dt;
}
В будущем, когда вы получите ошибку нулевой ссылки, добавьте точку останова и проверьте значение каждой переменной в строке, чтобы увидеть, какая из них равна нулю.