[英]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.