HAVIT Knowledge Base

Vývoj webových aplikací, .NET, SQL, návrh
Welcome to HAVIT Knowledge Base Sign in | Join | Help
-
Home Články Forums Obrázky Soubory

ASP.NET

Vývoj webových aplikací ASP.NET

BoundField částečně ignoruje DataFormatString

Problém je v tom, že na BoundField je před formátováním aplikován HtmlEncode. Je to sice reportovaný a uznaný bug (špatně navrženo), nicméně z důvodu zpětné kompatibility budoucích verzí .NET Frameworku to už zřejmě zůstane v této podobě.

BoundField v GridView tedy ve výchozím nastavení nesprávně vyhodnotí DataFormatString u dat, čísel, atp. - například z hodnoty 0,123456 a formátu "aa {0:n1}" udělá "aa 0,123456".

Pomůže nastavit HtmlEncode = "false", tedy vypnout onen problematický HtmlEncode.

<asp:BoundField
   DataField="MyField"
   DataFormatString="{0:n2}"
   HtmlEncode="false"
/>
Published 25. dubna 2006 1:44 by Robert Haken
Filed under:

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

 

Petr Hübner said:

Super, ani nevite jak jsem se s tim natrapil. Diky za dobrej tip.
května 6, 2006 18:58
 

Dan said:

Dobrý tip. A je nějaká možnost, jak nastavit HtmlEncode=false pro celý GridView při automatickém generování sloupců? Např. když z databáze načítám html odkazy a pod.
října 3, 2006 18:30
 

Robert Haken said:

Obávám se, že žádný přepínač vyšší úrovně není. Nezbývá než definovat sloupce ručně.

října 3, 2006 18:54
 

Dan said:

Díky za info, toho jsem se obával. Ručně to však nelze, je to stránka s různými zdroji dat, takže sloupce musím plnit automaticky :-/
října 4, 2006 9:39
 

Robert Haken said:

Pak bych asi jako jedinou šanci viděl prohledávání kolekce GridView.Columns a nastavování HtmlEncode tam. Přibližně jako

foreach (DataControlField field in MyGridView.Columns)

{

   if (field is BoundField)

   {

       ((BoundField)field).HtmlEncode = false;

   }

}

října 5, 2006 10:36

What do you think?

(required) 
(optional)
(required) 
Enter the code you see below

Submit