Как отсортировать gridview с помощью выпадающего списка - PullRequest
3 голосов
/ 08 марта 2011

конкретный пример, на который я ссылаюсь, это сайт

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

обратите внимание на сортировку по выпадающему списку.в основном я хочу отсортировать товары по цене, названию, популярности ??

мне нужно запросить базу данных и снова получить отсортированные данные в gridview, или я должен уже отсортировать элементы в gridview, которые ужетам ??

Я пытался это сделать, но это неправильный подход, в основном я пытался повторно заполнить данные в событии загрузки страницы, которое выдавало ошибку.

Теперь, каков правильный подход.

Ответы [ 2 ]

3 голосов
/ 08 марта 2011

Вы могли бы иметь что-то подобное для события SelectIndexChanged DropDownList

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 голос
/ 08 марта 2011

Вам не нужно запрашивать базу данных, но в целом она может быть лучше (чтобы новые данные попадали в результаты во время просмотра пользователями).

Я отвечал бы на событие (в данном случае это было бы SelectedValueChanged в DropDownList) и выполнял бы там сортировку. Я бы отсортировал коллекцию, которую вы либо сохраняете в сеансе, либо повторно запрашиваете каждый раз, затем устанавливаете источник данных GridView и повторно связываете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...