[英]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.CurrentCulture
和DateTime
的默认格式,因此将得到结果。
因此,您至少有两个选择:
将主线程的CultureInfo
设置为所需的日期/时间格式。 请注意,这将影响任何DateTime
对象上的所有ToString()
调用,因此这可能不适合您。
代替使用DateTime
列,而使用string
列并在服务器端进行转换。 但是,这不是一个好方法,因为您失去了DateTime
类型的所有好处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.