Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нестандартная сортировка DataGrid 
V
    Опции темы
puZzo
Дата 3.5.2011, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 12.3.2008

Репутация: нет
Всего: нет



Здравствуйте Уважаемые!

Вот отсюда вычитал как можно реализовать свою сортировку против штатной, но чет совсем не могу вкурить метод 
Код
public SortLogic(ListSortDirection direction, DataGridColumn column)

что к чему тут?

и собственно сабж, нужно вывести часовые записи за сутки(24 штуки) в таком порядке:
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 0 1 2 3 4 5 6 7

Спасибо за внимание=) Буду весьма признателен за помощь=)
PM ICQ   Вверх
jonie
Дата 3.5.2011, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 2
Всего: 118



ну "отсортировал" бы добавив пробелов вперед цифр и забыл бы... если, конечно, время жмет...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
puZzo
Дата 3.5.2011, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 12.3.2008

Репутация: нет
Всего: нет



время не жмет, да и решил пойти более правильным способом (в моем случае), сортировать на стадии выборки данных (SQL):
Код
    ORDER BY 
        TimeEventDate,
        
        CASE 
            WHEN TimeEventHour >= 8 THEN NULL
            ELSE TimeEventHour
        END,
        
        CASE 
            WHEN TimeEventHour <= 7 THEN NULL
            ELSE TimeEventHour
        END

а вот с остальным все равно не понятно..
PM ICQ   Вверх
Kefir
Дата 5.5.2011, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



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

По поводу примера - там всё очень просто. SortLogic принимает два параметра - направления сортинга и столбец в датагриде, по которому идет сортировка. В зависимости от свойства столбца Header сортировка сменяется. Последовательность действий с точки зрения UI:
  • Пользователь щелкает по заголовку столбца, у которого Header == Int
  • DataGrid вещает событие Sorting (мол, "щас я всё отсортирую")
  • Мы имеем возможность обработать это событие (подписаны на Sorting).
  • В обработчике Sorting мы подменяем стандартный сортировщик ListCollectionView на свой (в нашем случае - SortLogic).
  • SortLogic-у в конструкторе передаем направление сортировки и столбец, который надо отсортировать
  • В зависимости от того, что написано в заголовке столбца SortLogic решает как надо отсортировать данные - в нашем примере это Int, а значит мы будем исльзовать Int.CompareTo(). 
  • Теперь надо установить e.Handled = true в обработчике события Sorting, чтобы DataGrid понял что коллекция уже отсортирована и дальнейших действий ему предпринимать не требуется (то биш таким образом мы отменяем стандарную сортировку).

PM MAIL WWW Skype   Вверх
puZzo
Дата 5.5.2011, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 12.3.2008

Репутация: нет
Всего: нет



Kefir, Спасибо большое) smile 
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.4340 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.