C# GridView';GridView1';激发的事件排序,该排序不是';不处理

C# GridView';GridView1';激发的事件排序,该排序不是';不处理,c#,data-binding,gridview,sqldatasource,C#,Data Binding,Gridview,Sqldatasource,我使用c#中的工具箱创建了一个gridview, 它能够显示和排序我的sqldatasource中的项目,但是当我更改sqldatasource时,正如在下面的代码中所看到的,它会显示错误“GridView'GridView1'触发的事件排序未处理” 下面是我的Default.aspx中的gridview和sqldataconnection代码(通过从工具箱拖放创建) 更新 您不必动态添加新数据源,因为您只需更改数据源的SelectCommand即可。照办 SqlDataSource1.Sele

我使用c#中的工具箱创建了一个gridview, 它能够显示和排序我的sqldatasource中的项目,但是当我更改sqldatasource时,正如在下面的代码中所看到的,它会显示错误“GridView'GridView1'触发的事件排序未处理”

下面是我的Default.aspx中的gridview和sqldataconnection代码(通过从工具箱拖放创建)


更新

您不必动态添加新数据源,因为您只需更改数据源的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();

收到2个错误(我复制粘贴了您的代码),对于您发送的2个部分不同,对于第一个->GridView1的DataSourceID必须是IDataSource类型控件的ID。找不到ID为“searchResults”的控件。对于第二个->数据源和数据源ID都在“GridView1”上定义。删除一个定义您可以在第二个代码中插入,在此之后。Controls.Add(searchResults);:GridView1.DataSourceID=String.Empty;现在,错误消息与标题相同。“GridView'GridView1'触发了未处理的事件排序。”奇怪。您可以提供gridview标记和设置datasource/datasourceID的所有代码吗?我已经添加了源代码,但正如我所说,我通过拖放添加了gridview
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();