ASP.NET : Ajuster l’affichage d’une date, d’une donnée décimale ou d’une donnée monétaire dans un GridView (DataFormatString)

Lorsqu'une donnée est affichée dans un GridView, il est possible de spécifier son format d'affichage. Dans un BoundField, c'est l'attribut DataFormatString qui permettra de préciser le format désiré. Dans un TemplateField, on précisera plutôt ce format à l'aide d'un paramètre dans la fonction Eval(), qui est utilisée pour spécifier la valeur à afficher.

Dans les deux cas, on devra utiliser des codes de format prédéterminés. Les différents codes disponibles sont expliqués sur MSDN.

▼Publicité

Format des dates

Ceci sera particulièrement utile lorsqu'un GridView affiche des dates. En effet, par défaut, le format d'affichage des dates n'est pas intéressant (ex : 2014-01-21 00:00:00). C'est pourquoi on voudra presque toujours préciser le format désiré.

Les différents formats disponibles sont expliqués sur MSDN.

BoundField

Pour contrôler le format d'une date affichée à l'aide d'un BoundField, on utilisera l'attribut DataFormatString.

Ex :

Fichier .aspx (ASP.NET)

<asp:GridView ...>

   <Columns>

      ...

      <asp:BoundField DataField="produit_modification" DataFormatString="{0:d MMMM yyyy}"  ... />

      ...

   </Columns>

</asp:GridView>

Attention : si vous travaillez avec un Framework .NET antérieur à 3.5, vous devrez mettre l'attribut HtmlEncode à false lorsque vous utilisez DataFormatString. Sans cet attribut, les données étaient converties en chaîne avant l'application du format donc le format devenait inopérant. Ce problème est réglé depuis le Framework 3.5.

TemplateField

Si vous travaillez avec un TemplateField plutôt qu'un BoundField, la date sera affichée à l'aide d'un simple Label. Son format sera précisé directement lors de l'évaluation de l'expression à afficher.

Ex :

Fichier .aspx (ASP.NET)

<asp:GridView ...>

   <Columns>

      ...

      <asp:TemplateField >

         <ItemTemplate>

            <asp:Label ID="labelModification" runat="server" Text='<%# Eval("produit_modification", "{0:d MMMM yyyy}") %>' />

         </ItemTemplate>

      </asp:TemplateField>

      ...

   </Columns>

</asp:GridView>

Configuration du format de date dans Web.config

Plutôt que de fournir le format de date partout où une date doit être affichée, vous pouvez utiliser le fichier Web.config pour centraliser cette configuration.

Ex :

Fichier Web.config (XML)

<configuration>

   <appSettings>

      ...

      <add key="FormatDateGrille" value="{0:d MMMM yyyy}" />

      ...

   </appSettings>

</configuration>

Voici  comment lire le format de la date si vous utilisez un BoundField :

Fichier .aspx (ASP.NET)

<asp:GridView ...>

   <Columns>

      ...

      <asp:BoundField DataField="produit_modification" DataFormatString="<%$AppSettings:FormatDateGrille%>"  ... />

      ...

   </Columns>

</asp:GridView>

Et voici comment y parvenir si vous utilisez un TemplateField :

Fichier .aspx (ASP.NET)

<asp:GridView ...>

   <Columns>

      ...

      <asp:TemplateField >

         <ItemTemplate>

            <asp:Label ID="labelModification" runat="server" Text='<%# Eval("produit_modification", ConfigurationManager.AppSettings["FormatDateGrille"] ) %>' />

         </ItemTemplate>

      </asp:TemplateField>

      ...

   </Columns>

</asp:GridView>

Format des nombres décimals et des données monétaires

L'affichage des nombres est moins problématique que l'affichage des dates. Cependant, lorsqu'on travaille avec des nombres comportant des décimales, il peut être intéressant de spécifier le séparateur de milliers, le séparateur décimal et le nombre de chiffres décimaux. Tout comme pour les dates, ceci sera réalisé à l'aide de l'attribut DataFormatString.

Dans le format spécifié, la lettre C tient pour Currency. Les informations contiendront donc un symbole monétaire. La lettre F, quant à elle, tient pour Fixe.

Ex :

Fichier .aspx (ASP.NET)

<asp:GridView ...>

   <Columns>

      ...

      <asp:BoundField DataField="produit_prixliste" DataFormatString="{0:C2}" .../>

      <asp:BoundField DataField="produit_poids" DataFormatString="{0:F3}" .../>

      ...

   </Columns>

</asp:GridView>

Pour plus d'information

« BoundField.DataFormatString, propriété ». MSDN. http://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.boundfield.dataformatstring.aspx

« Chaînes de format de date et d'heure personnalisées ». MSDN. http://msdn.microsoft.com/fr-ca/library/8kb3ddd4.aspx

« How To Set a Date Format In GridView Using ASP.NET or How to format datetime in gridview boundfield and template columns ». Aspdotnet-Suresh. http://www.aspdotnet-suresh.com/2011/05/how-to-set-date-format-in-gridview.html

« GridView: Bind date format in BoundField using your web.config settings ». HP's blog. http://hspinfo.wordpress.com/2008/01/17/gridview-bind-date-format-in-boundfield-using-your-webconfig-settings/

« Date Formatting in C# ». Mikesdotnetting. http://www.mikesdotnetting.com/Article/23/Date-Formatting-in-CSharp

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories