SqlConnection con = new SqlConnection(str);
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
dt = Session["Search"] as DataTable;
da.Fill(dt);
listview1.DataSource = dt;
listview1.DataBind();
Incorrect implementation.
I see you already have data in Session. Since you have it, you don't need to hit DB and get back data. Simply do:
if(Session["Search"] != null)
{
listview1.DataSource = (DataTable) Session["Search"];
listview1.DataBind();
}
Just to add on, the reason why you were getting an error was: You defined a dataadapter without a command and tried to fill the dataset. If you want to hit database and get data, first define the adapter command (probably a select statement) and then fill a dataset from it.