在DataGridView中对日期进行排序

5

我正在使用sqlDataReader从SQL表中提取不同的信息。其中一个列包含DateTime,并且通过以下方式从SQL中提取并正确显示:

var datestring = reader.GetDateTime(reader.GetOrdinal("deadline")).ToShortDateString();

在DataGridView中以以下格式显示:dd.MM.yyyy 当我尝试对此进行排序时,它会根据dd进行排序,而不管MMyyyy信息如何。
使用以下命令将日期字符串放入datagridview:
dgv_tasks.Rows.Add(tid, taskname, sidvariable, datestring);

有人知道为什么它根本不按日期排序,只按dd中的数字排序吗?

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


2
你如何准确地对DataGridView进行排序?看起来你是基于“字符串”进行排序,而不是“日期时间”。 - Soner Gönül
你能否通过SQL查询来排序它? - horHAY
2个回答

18
你希望在 DataGridView 中将其保留为 DateTime 类型,而不是转换成字符串。这就是为什么它按字母顺序排序,而不是按日期排序的原因。
删除 .ToShortDateString() ,并将你的 DataGridViewColumn 定义为 DateTime 类型(假设你是手动创建列)。
在将数据分配给 DataGridView 后,只需修改该列的 DefaultCellStyle.Format 值,以以你选择的任何方式显示日期:
dgv_tasks.Columns["deadline"].DefaultCellStyle.Format = "dd.MM.yyyy";

谢谢。完美地工作了! :) - Skram

2

因为你将其转换为字符串,所以它按字母顺序排序。

尝试使用日期值和格式化程序在 datagridview 中进行显示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接