2009-04-06 5 views
2

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

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

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

Любые предложения? Спасибо.

ответ

3

Заканчивать этот blog post для общей подпрограммы справиться с этим

+0

nice information..thanks много –

1

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

0

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

http://tablesorter.com/docs/

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

0

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

// ... 

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

У меня есть 'sortExp' и' sortDir' из другой функции. Я заполняю свой 'GridView', но он не работает. Не могли бы вы помочь? – SearchForKnowledge

0

Самый простой и элегантный способ сделать это состоит в использовании 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; } 
    } 

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

Смежные вопросы