Determinare il tipo di dati della colonna dell'origine dati, "Crea data". Assicurati che stia producendo un vero campo datetime e non qualcosa come un varchar. Se l'origine dati è una stored procedure, è del tutto possibile che CreateDate viene elaborato per produrre un varchar al fine di formattare la data, in questo modo:
SELECT CONVERT(varchar,TableName.CreateDate,126) AS CreateDate
FROM TableName ...
Utilizzando CONVERTIRE come questo è spesso fatto per rendere i risultati delle query soddisfare i requisiti di qualunque altro codice sta per elaborare quei risultati. Lo stile 126 è il formato ISO 8601, uno standard internazionale che funziona con qualsiasi impostazione della lingua. Non so quale sia il tuo settore, ma probabilmente era intenzionale. Non vuoi scherzare. Questo stile (126) produce una rappresentazione in formato stringa di una data nel formato '2013-04-29T18: 15: 20.270' proprio come hai riportato tu! Tuttavia, se CreateDate è stato elaborato in questo modo, non è possibile che il tuo bf1.DataFormatString visualizzi invece "29/04/2013". È necessario innanzitutto iniziare con una colonna di tipo datetime nell'origine dati SQL originale per prima cosa per bf1 per consumarlo correttamente.Quindi, solo aggiungerlo alla query di origine dei dati, e lo chiamano con un nome diverso come CreateDate2 in modo da non disturbare qualsiasi altro codice già dipende CreateDate, in questo modo:
SELECT CONVERT(varchar,TableName.CreateDate,126) AS CreateDate,
TableName.CreateDate AS CreateDate2
FROM TableName ...
Poi, nel codice, è' ll deve legarsi BF1 a "CreateDate2" al posto della "CreateDate" originale, in questo modo:
BoundField bf1 = new BoundField();
bf1.DataField = "CreateDate2";
bf1.DataFormatString = "{0:dd/MM/yyyy}";
bf1.HtmlEncode = false;
bf1.HeaderText = "Sample Header 2";
dv.Fields.Add(bf1);
Voila! Ora la tua data dovrebbe mostrare "29/04/2013"!
Purtroppo, i vostri suggerimenti sono stati non funziona. Così ho cambiato il BoundField in un TemplateField e ho creato un TemplateField dinamico. – iceheaven31
So che questo è vecchio, ma ho la sensazione che "CreateDate" sia stato definito come una stringa e non come un "DateTime". Puoi verificare? –
Dai un'occhiata qui https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.boundfield.dataformatstring(v=vs.110).aspx –