asp.net gridview搜索和排序交互

时间:2014-04-02 16:26:24

标签: c# asp.net gridview

我对asp gridview有点问题......

在gridview中,我添加了2个文本框和一个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,我希望只对结果列表进行排序。

有办法解决这个问题吗?

提前感谢!

1 个答案:

答案 0 :(得分:0)

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

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();
        }
    }