如何使用下拉列表对gridview进行排序

时间:2011-03-08 15:29:04

标签: c# asp.net sql sorting gridview

我所指的具体例子是这个网站

http://www.iamextreme.net/category.php?CategoryId=1&SubCategoryId=0&SortBy=name

注意按下拉列表排序。基本上我想根据价格,名称,人气来对产品进行分类?

我是否必须重新查询数据库并再次在gridview中检索已排序的数据,或者我应该已经对gridview中已经存在的项目进行排序了吗?

我试过这个,但是它的方法错了,基本上我试图在页面加载事件中重新填充数据,这是错误的。

现在正确的做法是什么。

2 个答案:

答案 0 :(得分:3)

对于DropDownList SelectedIndexChanged事件

,您可以使用类似的内容
protected void DropDownList1_SelectIndexChanged(object sender, EventArgs e)
        {
            gvSorting.Sort(DropDownList1.SelectedValue, SortDirection.Ascending);
        }

并处理GridView的排序事件

protected void gvSorting_Sorting(object sender, GridViewSortEventArgs e)
{
    DataTable dtSortTable = gvSorting.DataSource as DataTable;
    if (dtSortTable != null)
    {
        DataView dvSortedView = new DataView(dtSortTable);
        dvSortedView.Sort = e.SortExpression + " " + getSortDirectionString(e.SortDirection);
        gvSorting.DataSource = dvSortedView;
        gvSorting.DataBind();
    }
}

private static string getSortDirectionString(SortDirection sortDireciton)
{
    string newSortDirection = String.Empty;
    if (sortDireciton == SortDirection.Ascending)
    {
        newSortDirection = "ASC";
    }
    else
    {
        newSortDirection = "DESC";
    }
    return newSortDirection;
}

答案 1 :(得分:1)

您不必重新查询数据库,但总体上可能更好(确保在用户浏览时新内容进入结果)。

我会响应一个事件(在示例中它是DropDownList上的SelectedValueChanged)并在那里进行排序。我会对一个集合进行排序,您可以将其保存在Session中或每次重新查询,然后设置GridView的DataSource并重新绑定。