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

时间:2017-12-01 13:11:19

标签: c# wpf datatable datagrid

我在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}

我做错了什么?如果没有时间在副本上获取日期,我错过了什么?

1 个答案:

答案 0 :(得分:0)

不幸的是,这是当前word = "Temple" ten = 10 twenty = 20 thirty = 30 forty = 40 fifty = 50 answer = word[0] + str(ten) + word[1]+str(twenty)+word[2]+str(thirty) + word[3] + str(forty) + word[4] + str(fifty) + word[5] 的实施限制。

正如您在reference sources中看到的那样,DataGrid使用简单的DataGrid调用将单元格内容呈现到剪贴板中,而不提供任何格式。此调用将使用ToString()CultureInfo.CurrentCulture的默认格式,从而获得结果。

所以你至少有两个选择:

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

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