Wie man Datumsformat in ASP .NET BoundField (DataFormatString) repariert?
Habe ich eine dynamische BoundField (für eine Detailansicht) mit dem folgenden code:
BoundField bf1 = new BoundField();
bf1.DataField = "CreateDate";
bf1.DataFormatString = "{0:dd/MM/yyyy}";
bf1.HtmlEncode = false;
bf1.HeaderText = "Sample Header 2";
dv.Fields.Add(bf1);
Aber irgendwie, es zeigt immer noch das falsche format: 2013-04-29T18:15:20.270.
Jede Art, wie ich dieses Problem beheben könnte, für ihn zu zeigen, "29/04/2013" statt? Vielen Dank für Ihre Hilfe.
Kommentar zu dem Problem - Öffnen
Leider sind Ihre Vorschläge nicht in Betrieb waren. Also änderte ich die BoundField in ein TemplateField und erstellt eine dynamische TemplateField statt.
Ich weiß, das ist alt, aber ich habe ein Bauchgefühl, dass
CreateDate
definiert wurde, als string und nicht als DateTime
. Können Sie das bestätigen? Kuck mal hier msdn.microsoft.com/en-us/library/...
InformationsquelleAutor der Frage iceheaven31 | 2013-05-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bestimmen Sie den Datentyp der Datenquelle-Spalte, "CreateDate". Stellen Sie sicher, dass es sich um die Herstellung einer tatsächlichen datetime-Feld und nicht so etwas wie ein varchar. Wenn Ihre Datenquelle ist eine gespeicherte Prozedur, ist es durchaus möglich, dass CreateDate verarbeitet wird, zu erzeugen, eine varchar -, um das Datum zu formatieren, etwa so:
Verwendung KONVERTIEREN, wie dies oft geschieht, um den Abfrage-Ergebnisse, füllen Sie die Anforderungen, was andere code wird die Verarbeitung der Ergebnisse. Stil 126 ISO-8601-format, einem internationalen standard, funktioniert mit jeder Spracheinstellung. Ich weiß nicht, was Ihre Branche ist, aber das war wohl beabsichtigt. Sie nicht zu verwirren wollen mit. Dieser Stil (126) erzeugt eine string-Repräsentation eines Datums in der form "2013-04-29T18:15:20.270' wie Sie berichtet! Allerdings, wenn CreateDate ' s verarbeitet wurde, auf diese Weise, dann gibt es keinen Weg, du wirst in der Lage sein, um Ihre bf1.DataFormatString zu zeigen "29/04/2013" statt. Müssen Sie zuerst starten Sie mit einer datetime-Spalte des Typs, der in der ursprünglichen SQL-Datenquelle zunächst für bf1, um richtig zu konsumieren. So fügen Sie es einfach an die Datenquelle Abfragen, und nennen es einen anderen Namen wie CreateDate2, um nicht zu stören, was anderen code, der bereits hängt davon ab, CreateDate, wie diese:
Dann, in Ihrem code, müssen Sie die bind-bf1 "CreateDate2" anstelle der ursprünglichen "CreateDate", etwa so:
Voila! Ihr date sollte nun zeigen, "29/04/2013" statt!
InformationsquelleAutor der Antwort ShieldOfSalvation
Könnte man hinzufügen
dataformatstring="{0:M-dd-yyyy}
" - Attribut, um das gebundene Feld, wie dieses:Quelle: cant format datetime mit dataformatstring
InformationsquelleAutor der Antwort BornToCode
Formatierung hängt von der server-Kultur einstellen. Wenn Sie
en-US
Kultur, die Sie verwenden können Short Date Pattern wie{0:d}
Beispielsweise Formate
6/15/2009 1:45:30
zu6/15/2009
Können Sie überprüfen, mehr Formate von
BoundField.DataFormatString
InformationsquelleAutor der Antwort Soner Gönül
Ich hatte das gleiche problem, brauchen nur zu zeigen, shortdate (ohne die Zeit), außerdem war es nötig, multi-language-Einstellungen, so hängt von der Sprache ab, anzeigen TT-mm-JJJJ oder mm-TT-JJJJ.
Schließlich mit
DataFormatString="{0:d}
alle funktioniert einwandfrei und zeigen nur das Datum mit Kultur-format.InformationsquelleAutor der Antwort Lucas Orlando
sehr einfach, fügen Sie einfach diese an Ihren gebundenes Feld
DataFormatString="{0: yyyy/MM/dd}"
InformationsquelleAutor der Antwort Mohammad
Den folgenden links können Ihnen helfen:
In der Client-Seite design Seite können Sie versuchen,diese: {0:G}
ODER
Können Sie umwandeln, datetime - format in der Abfrage selbst aus der Datenbank:
InformationsquelleAutor der Antwort Sai Ayyapps Sekaran
InformationsquelleAutor der Antwort subramanya4