You have written too much of stuffs to do a simple delete, not sure why.
Can you try following code by just commenting out your RowDeleting event for sometime and check if it works for you?
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
int index = Convert.ToInt32(e.RowIndex);
DataTable dt = ViewState["dt"] as DataTable;
ViewState["dt"] = dt;
GridView1.DataSource = dt;
Note: This will delete the row from the datatable not from the database, for which you need to write the logic further.
Hope, it helps :)