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;
dt.Rows[index].Delete();
dt.AcceptChanges();
ViewState["dt"] = dt;
GridView1.DataSource = dt;
GridView1.DataBind();
}
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 :)