ОБНОВЛЕНИЕ
Вам не нужно динамически добавлять новый источник данных, поскольку все, что вы хотите изменить, - это SelectCommand источника данных.Просто сделайте
SqlDataSource1.SelectCommand = "SELECT * FROM Books WHERE id=1";
gv.DataBind();
Если вы хотите искать книги по поисковому запросу, вы можете сделать что-то вроде
SqlDataSource1.SelectCommand = "SELECT * FROM Books WHERE id LIKE '%" + searchTxt.Text + "'%";
gv.DataBind();
Добавление нового источника данных динамически вызывает серьезные проблемы, насколько яиспытал.
Пожалуйста, попробуйте
SqlDataSource searchResults = new SqlDataSource(WebConfigurationManager.ConnectionStrings["MyDbConn"].ToString(), "SELECT * FROM Books WHERE id=1");
searchResults.ID = "searchResults"; //or something else
this.Controls.Add(searchResults);
GridView1.DataSourceID = searchResults.ID;
GridView1.DataBind();
или проще
SqlDataSource searchResults = new SqlDataSource(WebConfigurationManager.ConnectionStrings["MyDbConn"].ToString(), "SELECT * FROM Books WHERE id=1");
this.Controls.Add(searchResults);
GridView1.DataSource = searchResults;
GridView1.DataBind();