C# asp.net gridview搜索和排序交互

C# asp.net gridview搜索和排序交互,c#,asp.net,gridview,C#,Asp.net,Gridview,我对asp gridview有点小问题 我在gridview中添加了两个文本框和一个ddl加上一个按钮,以便搜索正常工作的gridview。以下是我的搜索按钮代码: protected void ButtonSearch_Click(object sender, EventArgs e) { string title = TextBoxSearchTitle.Text; string artist = TextBoxSearchArtist.Text;

我对asp gridview有点小问题

我在gridview中添加了两个文本框和一个ddl加上一个按钮,以便搜索正常工作的gridview。以下是我的搜索按钮代码:

 protected void ButtonSearch_Click(object sender, EventArgs e)
    {
        string title = TextBoxSearchTitle.Text;
        string artist = TextBoxSearchArtist.Text;
        string genre = DDLSearch.SelectedValue;

        if (genre == "Alle")
        {
            SqlDataSource1.FilterExpression = String.Format("Title LIKE '%{0}%' AND Artist LIKE '%{1}%'", title, artist);
        }
        else
        {
            SqlDataSource1.FilterExpression = String.Format("Title LIKE '%{0}%' AND Artist LIKE '%{1}%' AND Genre ='{2}'", title, artist, genre);
        }
    }
但是现在我的gridview中有一个内置的排序功能,它允许用户按标题或艺术家对gridview进行排序。如果我现在搜索一个标题并得到5个结果,那么在我按艺术家排序之后,内置的排序功能会将sqldatasource中的所有项目加载到gridview,我更希望在gridview中对结果列表进行排序

有办法解决这个问题吗


提前谢谢

基本上,您需要覆盖排序,而不是在对原始数据进行排序时,从当前显示的网格中传递数据

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {      
        DataTable dtSortTable = GridView1.DataSource as DataTable;

        if (dtSortTable != null)
        {
            DataView dvSortedView = new DataView(dtSortTable);

            dvSortedView.Sort = e.SortExpression + "" + getSortDirectionString(e.SortDirection);

            GridView1.DataSource = dvSortedView;
            GridView1.DataBind();
        }
    }

你把GridView1\u排序和你的GridView链接了吗?是的,我链接了,否则它会抛出一个异常