在DataGridView中排序日期

Skr*_*ram 3 c# sorting datetime datagridview winforms

我正在使用sqlDataReader从SQL表中提取不同的信息.其中一列包含DateTime,并从sql中提取并正确显示,使用:

var datestring = reader.GetDateTime(reader.GetOrdinal("deadline")).ToShortDateString();
Run Code Online (Sandbox Code Playgroud)

它以下列格式显示在DataGridView中: dd.MM.yyyy

当我尝试对此进行排序时dd,无论是什么MM和yyyy信息,它都会对其进行排序.

使用以下命令将datestring放入datagridview:

dgv_tasks.Rows.Add(tid, taskname, sidvariable, datestring);
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么它根本没有将它作为日期排序,只是数字dd?

(我在这里寻找答案,但没有一个类似的问题有一个有效的答案).

Gra*_*ICA 9

你要离开它作为一个DateTime在DataGridView,不将其转换为字符串.这就是为什么它按字母顺序排序,而不是按日期排序.

删除.ToShortDateString()并定义您DataGridViewColumn的DateTime类型(假设您手动创建列).

将数据分配给后DataGridView,只需修改该列的DefaultCellStyle.Format值即可以您选择的方式显示日期:

dgv_tasks.Columns["deadline"].DefaultCellStyle.Format = "dd.MM.yyyy";
Run Code Online (Sandbox Code Playgroud)