1. on your page 2 where are you putting the data in viewstate object. you are checking for null and then not doing if it is null.
2. my suggestion
in default2.aspx
if(Application["CurrentData"] == null)
{
Application["CurrentData"] = dt;
}
in default3.aspx
GridView1.DataSource = (DataTable)Application["CurrentData"];