首页 > 解决方案 > 从 MySQL 创建的数据表中将日期添加到 datagridview 作为 dd-MM-yyyy

问题描述

我有一个 web 服务,它从表中选择 * 并填充数据表,然后将该数据表返回到应用程序并绑定为 datagridview 的数据源。我的问题是返回的几个日期列被格式化为 yyyy-MM-dd 包括时间。

Datagridview DefaultCellStyle.Format也不行,因为我创建rdlc报表的时候,日期格式还是yyyy-MM-dd。

如何在将日期添加到 Web 服务上的数据表之前将其格式化为 dd-MM-yyyy?目前它只是选择 * 并用所有内容填充数据表并返回它。

语言是 VB.Net

标签: vb.net

解决方案


这一点没有意义:

我有一个 web 服务,它从表中选择 * 并填充数据表,然后将该数据表返回到应用程序并绑定为 datagridview 的数据源。我的问题是返回的几个日期列被格式化为 yyyy-MM-dd 包括时间。

日期列(即数据类型为 DATE 或 DATETIME 的列)以某种内部数字表示形式保存日期表示。它没有格式;您的计算机具有日期格式。您在调试器/UI 中查看数据表并查看 yyyy-MM-dd,因为这是调试器在显示日期之前将日期格式化的原因,可能参考了系统区域设置/区域性设置。您的 Web 服务向您返回了一个包含日期类型列的数据表,并且它们是无格式的。

如果您希望它们具有特定格式,则将格式设置为 datagridview 列的单元格样式的属性:

 dataGrid.Columns(x).DefaultCellStyle.Format = "dd-MM-yyyy"

Datagridview DefaultCellStyle.Format也不行,因为我创建rdlc报表的时候,日期格式还是yyyy-MM-dd。

这是正确的; 因为您将数据表传递给 RDLC,而不是 datagridview。报告的工作是将数据从表格中的日期时间适当地格式化为适合报告正在运行的区域的字符串。例如:

=Format(whatever!SomeDateColumn,"dd-MM-yyyy")

请不要让网络服务将日期格式化为字符串;如果后端低级别层将所有内容字符串化为某种固定格式,那么它会使其他地方的所有内容都变得更加困难,而这应该是前端/表示层的工作


推荐阅读