【问题标题】:Sorting dates in DataGridView在 DataGridView 中对日期进行排序
【发布时间】:2015-06-28 17:39:50
【问题描述】:

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

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

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

当我尝试对此进行排序时,无论MMyyyy 信息是什么,它都会在dd 之后对其进行排序。

使用以下命令将日期字符串放入数据网格视图中:

dgv_tasks.Rows.Add(tid, taskname, sidvariable, datestring);

任何人都知道为什么它根本不将其排序为日期,而只是 dd 中的数字?

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

【问题讨论】:

  • 您如何对 datagridview 进行准确排序?看起来您是根据string 对其进行排序的,请注意DateTime
  • 您不能通过您的 SQL 查询对其进行排序吗?

标签: c# winforms sorting datetime datagridview


【解决方案1】:

您希望将其作为DateTime 保留在DataGridView 中,而不是将其转换为字符串。这就是为什么它按字母顺序排序,而不是按日期排序。

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

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

dgv_tasks.Columns["deadline"].DefaultCellStyle.Format = "dd.MM.yyyy";

【讨论】:

  • 谢谢。工作完美! :)
【解决方案2】:

它是按字母顺序排序的,因为您将其转换为字符串。

尝试将 datagridview 中的日期值与格式化程序一起用于显示目的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 2012-04-25
    相关资源
    最近更新 更多