Gridview Сортировка с изображениями - PullRequest
2 голосов
/ 06 апреля 2009

У меня есть веб-приложение (ASP.NET 2.0 с C #), и в нем у меня есть gridview, который получает свои данные из базы данных оракула.

Мне нужно было реализовать функцию сортировки для вида сетки, поэтому я добавил выпадающее меню прямо над видом сетки с двумя вариантами выбора: По возрастанию и По убыванию. Затем в методе Gridview_Sorting у меня есть оператор switch, который в основном проверяет выбор в выпадающем меню и сортирует его соответственно.

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

Есть предложения? Спасибо.

Ответы [ 5 ]

3 голосов
/ 06 апреля 2009

Прочтите это сообщение в блоге , чтобы узнать об общей подпрограмме

1 голос
/ 06 апреля 2009

Простым решением будет использование элемента управления изображением или кнопки изображения. В событии щелчка переключите изображение с одного изображения на другое. Чтобы определить предыдущее состояние, либо используйте переменную сеанса, либо определите, какое свойство imageurl кнопки изображения было ранее установлено, переключите его и вызовите метод сортировки.

0 голосов
/ 15 октября 2012

Самый простой и элегантный способ сделать это - использовать ViewState . Сохраняйте направление сортировки в ViewState и обращайтесь к нему каждый раз, когда происходит сортировка.

public SortDirection GridViewSortDirection
    {
        get
        {
            if (ViewState["sortDirection"] == null || (SortDirection)ViewState["sortDirection"] == SortDirection.Descending)
                ViewState["sortDirection"] = SortDirection.Ascending;
            else if ((SortDirection)ViewState["sortDirection"] == SortDirection.Ascending)
                ViewState["sortDirection"] = SortDirection.Descending;

            return (SortDirection)ViewState["sortDirection"];
        }
        set
        { ViewState["sortDirection"] = value; }
    }

Если ранее сортировка не выполнялась ( нулевое условие ) или предыдущее направление сортировки было убывающим, сортировка в следующий раз должна выполняться в порядке возрастания. Аналогично, наоборот.

0 голосов
/ 04 июня 2012

Я добавляю изображение в ячейку заголовка при сортировке:

// ...

GridViewRow headerRow = GridView1.HeaderRow;

foreach (TableCell tableCell in headerRow.Cells)
{
    if (tableCell.HasControls())
    {
        LinkButton button = tableCell.Controls[0] as LinkButton;
        if (button != null)
        {                                            
            if (sortExp == button.CommandArgument)
            {
                Image image = new Image();
                if (sortDir == "ASC")
                {
                    image.ImageUrl = "/_layouts/Document LibraryManager/icon_ascending.gif";
                    tableCell.Controls.Add(image);
                }
                else
                {
                    image.ImageUrl = "/_layouts/Document LibraryManager/icon_descending.gif";
                    tableCell.Controls.Add(image);
                }
            }
        }
    }
}
0 голосов
/ 11 февраля 2011

Я использую сортировщик таблиц JQuery. На стороне клиента сортировка на стороне клиента выполняется быстрее, и этот плагин позволяет указывать изображения, отображаемые в заголовках ваших столбцов:

http://tablesorter.com/docs/

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

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