Hi Mani, in your problem, u can save your last data in datatable variable. To use session variable,
Session["mySearchResult"] = searchResultTable;
searchResultGridView.DataSource = searchResultTable;
searchResultGridView.DataBind();
When u search new keyword and return data back from server, save it in temp table. then retrieve your previous saved table from Session. and Loop through every row again and add it into old table and re-save it to Session.
newSearchResultTable = // new search result data from server;
searchResultTable = Session\["mySearchResult"\] as DataTable; // get back from session
foreach(DataRow row in newSearchResultTable.Rows) // loop every rows
{
searchResultTable.Rows.Add(row); // add to existing table
}
Session\["mySearchResult"\] = searchResultTable; // save back and bind again
searchResultGridView.DataSource = searchResultTable;
searchResultGridView.DataBind();
Hint: when u enable the "EnableViewState" to false, your selected info will not be avaliable from the server. Hope it works,