![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
m9yt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Добрый день.
У меня есть dataGridView, в котором один из столбцов заполнен датами в формате dd.mm.yyyy. При сортировке столбца даты корректно не сортируются. Например, такие значения отсортировать не получается: "01.11.2007" "02.09.2010" "02.11.2007" "06.02.2008" "10.06.2006" Есть какие - то идеи? |
|||
|
||||
gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: нет Всего: 40 |
Они отсортированы как строки содержащие даты. Надо копать в этом направлении
|
|||
|
||||
m9yt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
В общем, разобрался с сортировкой добавлением класса сортировки. Теперь вопрос: как отловить событие, которое происходит при нажатии на заголовок столбца, при котором, собственно, и сортируется столбец.
|
|||
|
||||
m9yt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Событие отловил, но проблема в том, что, даже если я вставлю туда свой код сортировки, столбец все равно потом отсортируется неправильно по умолчанию. Можно ли как - то отключить сортировку по умолчанию, но при это оставить рабочим глиф сортировки и кнопку соответственно?
Это сообщение отредактировал(а) m9yt - 13.6.2013, 14:48 |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
О каком событии речь? Ты не пишешь, что конкретно сделал, но ждешь, что тебе помогут в решении возникших при этом проблем. Если это было событие SortCompare, то в конце надо пометить его обработанным
Добавлено через 2 минуты и 22 секунды А вообще даты грид и так прекрасно сортирует и для этого не надо велосипед изобретать. Надо просто корректно указать тип данных столбца и убедиться в том, что используемый формат даты соответствует применяемой культуре. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
m9yt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Да, событие SortCompare.
Насчет типа данных: я указывал тип typeof(DateTime) - безрезультатно. |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Тогда сделай как я написал
Где ты его указывал? Его надо указывать в свойствах столбца. Там по умолчанию стоит String, вот оно и сортируется как строки. Ты когда создавал столбцы для таблицы свойства как-нибудь настраивал? -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
m9yt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
dataGridView1.Columns.Add("", "Дата"); dataGridView1.Columns[0].ValueType = typeof(DateTime); |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
А в ячейки ты что добавлял, даты или строки? Я вот написал проект, правда когда создавал, не посмотрел, что он на VB.Net, но там код простейший, думаю проблем не вызовет. Все работает нормально. Проект в аттаче Присоединённый файл ( Кол-во скачиваний: 5 ) ![]() -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
m9yt |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Просто вписал эту единственную строчку в обработчик - ничего не изменилось. Какова тогда ее суть? Добавлено через 3 минуты и 36 секунд
Естественно строки, НО в формате даты. В этом - то и проблема. Поэтому и пришлось писать свой класс, который берет данные ячейки и перегоняет их в дату. Теперь осталось решить вопрос с нажатием на заголовок столбца, чтобы применялась лишь моя сортировка, а стандартная отбрасывалась. |
||||||
|
|||||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Почему естественно? Я вот добавил даты и все нормально сортируется. После ее выполнения сортировка продолжаться не должна. У тебя ведь в этом проблема? Добавлено @ 16:44 Ты, кстати, SortMode для столбца правильно установил? -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
m9yt |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Ну потому что в ячейку данные записываются вот так:
и т.д. SortMode = DataGridViewColumnSortMode.Automatic; После выполнения той (единственной) строки в обработчике самая первая строчка остается на месте, остальные сортируются по-старому - как строки. Это сообщение отредактировал(а) m9yt - 13.6.2013, 19:23 |
||||
|
|||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Во-первых, от этого строка не перестает быть строкой и не становится датой. Во-вторых, не вижу ничего естественного в том, что ты загоняешь данные в виде строк, а ждешь, что сортироваться они будут как даты. Я тебе сказал уже, что надо загонять туда даты и даже пример выложил, где все сортируется правильно. И получаешь режим, используемый по умолчанию, но коль скоро сортировка у тебя программная, то видимо и режим надо задать Programatic. Не? ![]() -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
m9yt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Можно сделать так (просто после получения данных перегонять столбец в даты). Может это и будет медленно на больших таблицах, но зато выглядит лучше, чем всякие костыли, и сортируется автоматически.
Это сообщение отредактировал(а) m9yt - 13.6.2013, 19:46 |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
Зачем? ![]() ![]() -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |