2012-04-06 13 views
2

Also habe ich einige Code haben, der wie folgt aussieht:Verwenden Sie eine Variable in asp.net Dataformatstring ascx

<asp:BoundField DataField="CreatedOn" HeaderText="Created on" 
SortExpression="CreatedOn" DataFormatString="{0:MMM dd yyyy hh:mm:ss tt}"> 

Das funktioniert, wie ich es möchte. Ich möchte jedoch das Datumsformat überall in meinem Programm wiederverwenden. Daher möchte ich eine Variable anstelle der oben verwendeten Zeichenfolge verwenden. Etwas wie:

<asp:BoundField DataField="CreatedOn" HeaderText="Created on" 
SortExpression="CreatedOn" DataFormatString="<%=myFormatString%>"> 

Aber das funktioniert überhaupt nicht. Es druckt buchstäblich aus:

Ich versuchte Bind, versuchte ich Eval, scheint nichts zu arbeiten. Es scheint mir, das sollte wirklich einfach sein, sogar notwendig. Bin ich die einzige Person auf der Welt, die einen DataFormatString mehr als einmal benutzen möchte? Ist das möglich oder bin ich ein Träumer?

+0

Können Sie bitte Ihre "myFormatString" -Funktion/Eigenschaft posten? – Philipp

+0

Es ist nur eine Zeichenfolge: 'öffentliche statische Zeichenfolge myFormatString =" {0: MMM TT JJJJ} "' Ich war unter dem Eindruck, wenn der Fehler auf dieser Seite war, würde es mir etwas sagen und nicht nur ausdrucken Text buchstäblich. – Andrew

+0

Ich habe es auch als eine Eigenschaft mit einem get versucht einfach eine Zeichenfolge zurückgegeben. – Andrew

Antwort

2

Sie setzen konnten es von Codebehind:

((BoundField)GridView1.Columns[ColumnIndex]).DataFormatString = myFormatString; 
+0

Das funktioniert tatsächlich, wenn ich es in die DataBound-Methode einfüge. Ich werde es als die Antwort akzeptieren, wenn niemand etwas besseres finden kann. Es scheint nur so, als hätte ich eine konstante Saite, ich sollte es mit <%= %> verbinden können. Wenn die Antwort lautet "Sie können das einfach nicht aus einem offensichtlichen Grund tun", dann ist das nervtötend. – Andrew

+0

So scheint es, dass Sie es einfach aus keinem ersichtlichen Grund tun können. Ich möchte anmerken, dass ich dies auch auf einer Telerik.Web.UI.GridBoundColumn tun musste, und diese Lösung unterscheidet sich sogar von dieser. Für diese Lösung musste ich dies in der PreRender-Methode für das Steuerelement tun und dann die blah.MasterTableView.Rebind() -Methode aufrufen (siehe "Deklarative Spalten" [hier] (http://www.telerik.com/help/aspnet -ajax/grid-using-columns.html) – Andrew

0

Ich glaube, ich habe gerade die Lösung, ich habe es nie benutzt, bevor so müssen Sie versuchen :-)

Description url not being decoded asp.net

ich so etwas versuchen würde:

<%# myFormatString() %> 
+0

Negativ. Druckt immer noch wörtlich aus. – Andrew

+0

haben Sie die Eigenschaft an einem anderen Objekt versucht? wie: Ich habe die Vermutung, dass serverseitige validierte Objekte keinen Inline-ASP-Code akzeptieren. Ich hatte bereits ähnliche Probleme in aspx/.net mit runat = "server". – Philipp

+0

Ja, das funktioniert wie erwartet und druckt die Zeichenfolge korrekt aus. Ich denke, das ist nur ein asp.net-Ding, wo sie nicht wollen, dass die Dinge für mich einfach sind ... – Andrew

2

Eine Option wäre, eine neue Klasse zu erstellen , DateBoundField (oder wie immer Sie es nennen möchten), die gebundenes Feld erbt. Im Konstruktor setzen Sie einfach den DataFormatString auf Ihre Datumsformat-Zeichenkette, dann verwenden Sie das DateBoundField überall für Ihre Daten, wenn Sie Ihr Datumsformat ändern müssen, ändern Sie einfach die Formatzeichenfolge im Konstruktor dieser Klasse.

public class DateBoundField : BoundField 
    { 
     public DateBoundField() 
     { 
      DataFormatString = "{0:yyyy-MMM-dd}"; 
     } 
    } 
Verwandte Themen