none
Formatage dans une GridView RRS feed

  • Question

  • Bonjour tout le monde,

    Dans une GridView, un BoundField peut faire l'objet d'une DataFormatString, qui permet d'en formater la valeur numérique, selon les formats de la fonction Format.

    Je n'ai pas connaissance qu'il en aille de même d'un ItemTemplate. Voici comment je m'en suis tiré, quelqu'un a-t-il mieux à proposer ?

    Désolé ça dépasse à droite, mais couper la formule ne serait pas forcément plus clair.

    <asp:Label ID="Jou_TirageLabel" runat="server" 
        EnableTheming="false" 
        Text='<%# Int32.Parse(Eval("Jou_Tirage").ToString()).ToString("###,##0") %>' >
    </asp:Label><br />

    Je ne sais plus bien avec quel champ j'ai essayé le DataFormatString cet après-midi. Curieusement, je me suis retrouvé avec le nombre de tirages dans une variable nvarchar (ListeJournauxParAnnonces, champ Jou_Tirage). ça serait quand même surprenant d'altérer la structure de la base sans s'en rendre compte en écrivant une page ASP, et je ne vois pas bien ce que le type nvarchar vient faire là pour stocker une quantité. Du coup pour refaire le test j'ai fait un cast dans l'autre sens.

    Construire une application web pas à pas en 12 ateliers, Atelier 4 : afficher et manipuler les données

    samedi 26 mai 2012 18:46

Réponses

  • Patrice Scribe :

    Bonjour,

    Dans un premier temps essayez peut-être Eval("Jou_Tirage").GetType.ToString() ce qui devrait permettre d'afficher le type de la donnée. J'aurais dis :

    Eval(Container.DataItem,"Jou_Tirage","{0:###,##0}") ?

    Cela me surprend que l'on donne juste le nom du champs dans Eval ?

    On me répond que object.GetType() est un 'méthode', qui n'est pas valide dans le contexte donné.

    Puis qu'aucune surcharge de la méthode Eval ne prend d'arguments '3'.

    Etrange dialecte, mais enfin on ne peut pas passer 3 arguments à Eval.

    Alors j'ai enlevé le premier, et là j'étais sur la voie.

    Un coup d'œil à la structure de la table m'ayant appris que le nombre de journaux avait été stocké dans une variable nvarchar, j'ajoute à la requête de la source de données :

    CAST(Jou_Tirage AS Integer) As Tirage

    puis dans la définition du Label, dans le ItemTemplate :

    Text='<%# Eval("Tirage","{0:###,##0}") %>'

    Et ça marche. Merci.

    • Marqué comme réponse Gloops lundi 28 mai 2012 10:21
    lundi 28 mai 2012 10:21

Toutes les réponses

  • Bonjour,

    Dans un premier temps essayez peut-être Eval("Jou_Tirage").GetType.ToString() ce qui devrait permettre d'afficher le type de la donnée. J'aurais dis :

    Eval(Container.DataItem,"Jou_Tirage","{0:###,##0}") ?

    Cela me surprend que l'on donne juste le nom du champs dans Eval ?


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    samedi 26 mai 2012 21:24
    Modérateur
  • Patrice Scribe :

    Bonjour,

    Dans un premier temps essayez peut-être Eval("Jou_Tirage").GetType.ToString() ce qui devrait permettre d'afficher le type de la donnée. J'aurais dis :

    Eval(Container.DataItem,"Jou_Tirage","{0:###,##0}") ?

    Cela me surprend que l'on donne juste le nom du champs dans Eval ?

    On me répond que object.GetType() est un 'méthode', qui n'est pas valide dans le contexte donné.

    Puis qu'aucune surcharge de la méthode Eval ne prend d'arguments '3'.

    Etrange dialecte, mais enfin on ne peut pas passer 3 arguments à Eval.

    Alors j'ai enlevé le premier, et là j'étais sur la voie.

    Un coup d'œil à la structure de la table m'ayant appris que le nombre de journaux avait été stocké dans une variable nvarchar, j'ajoute à la requête de la source de données :

    CAST(Jou_Tirage AS Integer) As Tirage

    puis dans la définition du Label, dans le ItemTemplate :

    Text='<%# Eval("Tirage","{0:###,##0}") %>'

    Et ça marche. Merci.

    • Marqué comme réponse Gloops lundi 28 mai 2012 10:21
    lundi 28 mai 2012 10:21
  • Au temps pour moi. Je pensais à http://msdn.microsoft.com/en-us/library/system.web.ui.databinder.eval mais j'imagine que l'expression de DataBinding porte déjà manifestement forcément sur le "data container".

    Pour le GetType il faut sans doute ne pas mettre dans une expression de data bind (le plus simple est de le demander dans le Debugger, si le type est bien nvarchar cela peut poser problème par exemple sui on veut trier, donc soit CAST soit modifier pour que l'on ait réellement un numérique...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    lundi 28 mai 2012 15:31
    Modérateur