簡體   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