繁体   English   中英

DataGrid复制到剪贴板的DateTime格式问题

[英]DataGrid copy to clipboard DateTime format issue

我在WPF中有一个数据网格,正在通过数据表填充SQL查询结果。 但是,当我将网格复制到剪贴板时,它总是以完整的日期/时间格式复制。 这是我在做什么:

我有一条SQL语句从数据库读取一些数据,包括日期字段,如:

searchProDateSQLCMD.CommandText = "select pName, convert(date, pDate), FROM [Professionals] WHERE pName = @parName"

我用以下结果填充数据表:

dTableAdpater = new SqlDataAdapter(searchProDateSQLCMD);
dTable = new DataTable("Professionals");
dTableAdpater.Fill(dTable);

然后,我为网格设置列以显示信息:

DataGridTextColumn jDateCl = new DataGridTextColumn();
pDateCl.Binding = new Binding("pDate");

pDateCl.Binding.StringFormat = "{0:d}";

然后,将网格与我创建的列绑定

SearchResultGrid.Columns.Add(pDateCl);

当我尝试复制该列时:

SearchResultGrid.SelectAllCells();
SearchResultGrid.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;

我得到了时间。 但时间格式为(dd/MM/yyyy 12:00:00 AM) ,即使我在SQL中使用convert()在列中使用{0:d}

我究竟做错了什么? 我只是想在没有时间的情况下得到复印件而错过了什么?

不幸的是,这是当前DataGrid的实现限制。

参考资料中可以看到, DataGrid使用简单的ToString()调用将单元格的内容呈现到剪贴板中,而没有提供任何格式。 此调用将使用CultureInfo.CurrentCultureDateTime的默认格式,因此将得到结果。

因此,您至少有两个选择:

  • 将主线程的CultureInfo设置为所需的日期/时间格式。 请注意,这将影响任何DateTime对象上的所有ToString()调用,因此这可能不适合您。

  • 代替使用DateTime列,而使用string列并在服务器端进行转换。 但是,这不是一个好方法,因为您失去了DateTime类型的所有好处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM