как установить столбец datagridview в формат даты

Я создал DataGridView и добавляю к нему столбцы следующим образом:

Dim col_1 = New DataGridViewTextBoxColumn
col_1.Name = "Date"
col_1.DefaultCellStyle.Format = "MM/dd/yyyy"
data_grid.Columns.Add(col_1)

затем я добавляю данные в столбец следующим образом:

data_grid.Item(1,1).Value = temp_date 

Сетка заполнена правильными данными, и все работает, однако ... когда я нажимаю на заголовки столбцов, столбец, показывающий даты, не сортируется правильно (он сортируется по алфавиту), и я знаю, что это потому, что я настроил его как «DataGridViewTextBoxColumn», но нет опции для столбца типа даты. Итак, как мне настроить его как столбец даты, чтобы он сортировался по дате при нажатии на заголовок?

Спасибо.


person John    schedule 26.06.2014    source источник
comment
Какой тип данных у temp_date? Это строка?   -  person Andy G    schedule 26.06.2014
comment
Да, тип данных temp_date - String.   -  person John    schedule 26.06.2014


Ответы (1)


Вы также должны установить ValueType столбца:

DataGridView1.Columns(0).ValueType = GetType(Date)

Затем преобразуйте date_temp в значение даты, прежде чем присвоить его значению ячейки.

Использование CDate может быть вашей первой попыткой:

data_grid.Item(1,1).Value = CDate(temp_date)

в противном случае исследуйте Parse, TryParse или Convert, чтобы получить значение даты.

person Andy G    schedule 26.06.2014
comment
Хорошо, я сделал это, и теперь кажется, что сортировка выполняется по дате, но сначала выполняется сортировка по Дню, а затем по Году, а Месяц, похоже, игнорируется. Я установил формат ММ / дд / гггг. Итак, теперь, когда я нажимаю на заголовок (DESC), он сортирует весь июль с 30-го по 1-е, а затем август с 31-го по первое. Если это Desc, то месяцы также должны спуститься. - person John; 26.06.2014
comment
Как опубликовать снимок экрана, чтобы понять, что я имею в виду? - person John; 26.06.2014
comment
Я бы исследовал DateTime.ParseExact, чтобы получить дату, соответствующую примененному форматированию. - person Andy G; 26.06.2014
comment
Сейчас он работает. Назначение типа данных DateTime переменной temp_date - вот что сделало это, но установка ValueType, вероятно, также сработает. Я не заметил, что годы прошли. Теперь сортировка выполняется правильно. Спасибо. - person John; 26.06.2014