Ermitteln Sie den Datentyp Ihrer Datenquellenspalte "CreateDate". Stellen Sie sicher, dass es ein tatsächliches Datetime-Feld und nicht etwas wie ein Varchar erzeugt. Wenn Ihre Datenquelle eine gespeicherte Prozedur ist, ist es durchaus möglich, dass ErstellDat verarbeitet wird, um eine varchar zu erzeugen, um das Datum zu formatieren, etwa so:
SELECT CONVERT(varchar,TableName.CreateDate,126) AS CreateDate
FROM TableName ...
Convert wie dies oft getan, um die Abfrageergebnisse zu machen füllen Sie die Anforderungen des anderen Codes, der diese Ergebnisse verarbeiten wird. Stil 126 ist ISO 8601-Format, ein internationaler Standard, der mit jeder Spracheinstellung funktioniert. Ich weiß nicht, was Ihre Branche ist, aber das war wahrscheinlich beabsichtigt. Du willst dich nicht damit anlegen. Dieser Stil (126) erzeugt eine Zeichenfolgendarstellung eines Datums in der Form '2013-04-29T18: 15: 20.270' genau wie Sie es gemeldet haben! Wenn CreateDate jedoch auf diese Weise verarbeitet wurde, können Sie auf keinen Fall Ihren bf1.DataFormatString stattdessen "29/04/2013" anzeigen lassen. Sie müssen zuerst in der ursprünglichen SQL-Datenquelle mit einer Datetime-Typspalte beginnen, damit bf1 sie korrekt konsumiert.So fügen Sie einfach es an die Datenquelle Abfrage, und nennen Sie es unter einem anderen Namen wie CreateDate2, um nicht zu stören, was anderer Code bereits auf ErstellDat abhängt, wie folgt aus:
SELECT CONVERT(varchar,TableName.CreateDate,126) AS CreateDate,
TableName.CreateDate AS CreateDate2
FROM TableName ...
Dann in Ihrem Code, Sie‘
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: statt der ursprünglichen "ErstellDat" auf "CreateDate2", wie so ll haben bf1 zu binden! Ihr Datum sollte stattdessen "29/04/2013" anzeigen!
Leider waren Ihre Vorschläge nicht funktioniert. Also habe ich das BoundField in ein TemplateField geändert und stattdessen ein dynamisches TemplateField erstellt. – iceheaven31
Ich weiß, das ist alt, aber ich habe das Gefühl, dass 'CreateDate' als String definiert wurde und nicht als' DateTime'. Können Sie das verifizieren? –
Werfen Sie einen Blick hier https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.boundfield.dataformatstring(v=vs.110).aspx –