Weblog @ rebex.cz

Weblogy na webu Rebexu
Welcome to Weblog @ rebex.cz Sign in | Help
in Search

Weblog @ Rebex.cz :: Honza Šotola

nepravidelné poznámky .NET vývojáře

Přestalo vám chodit formátování přes DataFormatString v GridView?

Dnes jsem se dost namořil s následujícím problémkem:

V jednom ASP.NET 2.0 projektu jsem měl GridView a v něm obyčejný BoundColumn, který zobrazoval hodnotu typu DateTime.
Nechtěl jsem zobrazovat celé datum a čas, ale jen datum a tak jsem se jal sloupec formátovat klasickou cestou - přidáním atributu DataFormatString a formátovací zkratky "d" pro ShortDateFormat.
Řádek vypadal následovně:

<asp:BoundFieldDataField="DtPlanedStart" HeaderText="Termín" SortExpression="DtPlanedStart" DataFormatString="{0:d}">

Leč výstup v GridView byl neformátovaný, ať jsem psal za dvojtečku cokoliv.

Naštěstí jsem našel odpověď v tomto článku - .NET 2.0 implicitně každý výstup z databáze HTML-encoduje, zřejmě aby předešel případným HTML-injection útokům.
No a encodovanou hodnota už nedokázal zformátovat.
Protože vím, že data v daném sloupci pocházejí z typované proměnné, která má vždy datetime hodnotu (a kudy tedy žádná "injekce" neproleze), mohl jsem si dovolit vyřešit tento problém prostým vypnutím HTML-encodování nad daným sloupcem:

<asp:BoundField DataField="DtPlanedStart" HeaderText="Termín" SortExpression="DtPlanedStart" DataFormatString="{0:d}" HtmlEncode="false" >

Published 25. července 2006 8:58 by honzas

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

 

fhk said:

taktez uz jsem na to narazil a jelikoz jsem byl linejsi a tudiz jsem nehledal odpoved na otazku "proc?", tak jsem to vyresil prevedenim na template field

&lt;asp:TemplateField HeaderText="Termín" SortExpression="DtPlanedStart"&gt;
&lt;ItemTemplate&gt;
&lt;%# DataBinder.Eval(Container.DataItem, "DtPlanedStart", "{0}") %&gt;
&lt;/ItemTemplate&gt;
&lt;/asp:TemplateField&gt;
srpna 9, 2006 10:21
 

Dan said:

Taky jsem s tímto chvíli bojoval, nové řešení má něco do sebe, jen na to člověk nesmí zapomenout :o)

Ale mám otázečku - je někde dostupný rozumný soupis použitelných parametrů za dvojtečku v DataFormatString="{0:???}. Díky...

ledna 6, 2007 14:45

Leave a Comment

(required) 
(optional)
(required) 
Submit
Powered by Community Server (Personal Edition), by Telligent Systems