C# 在DataGridView的列中仅显示日期

C# 在DataGridView的列中仅显示日期,c#,winforms,date,datagridview,C#,Winforms,Date,Datagridview,我在MySQL数据库中有一个date存储,格式为Datetime 我只想将日期放入一个DataGridView中,但当我尝试获取以下小时的日期时,类似于: 29/06/2016 12:01:21 我尝试使用date()函数直接从MySQL查询中查找日期,但仍然不起作用,因为在我的DataGridView中,我看到的日期格式如下: 29/06/2016 00:00:00 最后,我尝试使用辅助代码来设置列,但没有结果 dataGridView.Columns[1].DefaultCellStyl

我在MySQL数据库中有一个date存储,格式为
Datetime

我只想将日期放入一个
DataGridView
中,但当我尝试获取以下小时的日期时,类似于:

29/06/2016 12:01:21
我尝试使用
date()
函数直接从MySQL查询中查找日期,但仍然不起作用,因为在我的
DataGridView
中,我看到的日期格式如下:

29/06/2016 00:00:00
最后,我尝试使用辅助代码来设置列,但没有结果

dataGridView.Columns[1].DefaultCellStyle.Format = "dd/MM/yyyy";
我使用
DataSource
将我的数据“链接”到我的
DataGridView


代码如下:

var dataTable = listOfResult.ToDataTable(); //ToDataTable() Function that convert List into DataTable
dataGridView.DataSource = dataTable;
dataGridView.Columns[1].DefaultCellStyle.Format = "dd/MM/yyyy";
listOfResult
是这样一个动态列表,里面有所有的日期

函数
ToDataTable()

公共静态数据表到数据表(此IEnumerable items)
{
var data=items.ToArray();
如果(!data.Any())返回null;
var dt=新数据表();
foreach(变量键入((IDictionary)数据[0]).Keys)
dt.Columns.Add(键);
foreach(数据中的var d)
Add(((IDictionary)d).Values.ToArray());
返回dt;
}

TaW是对的。设置数据类型:replace

dt.Columns.Add(key);


对于所需的列。

@OffirPe'er-我使用数据绑定将我的“日期”链接到我的DataGridView。我从数据库中读取日期,并将其放入datagridview。请显示代码您是否检查了
ValueType=typeof(DateTime)用于该列?否则,格式将以静默方式失败。另外:在加载数据之前尝试设置这些属性。另外:您在哪里设置DataTable列的数据类型???@LorenzoBelfanti我将问题标记为链接文章的副本。原因正是因为列的类型不是
DateTime
。使用
Columns.add(“column name”)
添加列时,列的类型将为
string
,因此格式将不适用。要解决这个问题,您可以使用linked post中的方法,或者简单地修复您的方法以支持属性类型。如果您对答案有任何疑问,请告诉我:)我使用DataSource,所以我不会手动创建列。我尝试使用
datagrid.Columns[1].ValueType=typeof(DateTime)但它不起作用这不是关于DGV的列,而是关于DataTable的列,所以我认为这应该起作用@TaW-我按照建议做了,在将列表转换为
DataTable
的函数中,我进行了一次审核,验证数据是否属于
DateTime
类型,在这种情况下,在创建列的同时
dt.Columns.Add(key);
dt.Columns.Add(key, typeof(DateTime));