IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#]Datagrid insertion signe € dans une colonne


Sujet :

ASP.NET

  1. #1
    Membre du Club Avatar de liliprog
    Inscrit en
    Juillet 2004
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 135
    Points : 61
    Points
    61
    Par défaut [C#]Datagrid insertion signe € dans une colonne
    Bonjour à tous,
    Voici mon interrogation:

    Dans mon datagrid j'ai une colonne pour afficher des prix. cette liste de prix vient de ma base de donnée où sont donc stocké tous les prix en type float.
    Pour l'instant, ça va. Je voudrais en fait inseré juste apres le prix l'élément €
    Au lieu d'avoir 475 j'aurais donc 475€

    mon problème est que je ne sais pas comment il faut faire pour insérer ce signe.
    Je pensais que en allant dans générateur de propriété>colonnes>selectionne ma colonne
    et en mettant dans "expression de mise en forme" le signe € alors j'aurais bien mon prix + € mais non il ne m'affiche plus que €.
    Est ce que quelqu'un sait comment résoudre mon petit soucis?
    Merci.

  2. #2
    Candidat au Club
    Inscrit en
    Novembre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Tu peux intercepter l'affichage de test data dans l'évenement item_databound, tu castes en string et tu rajoutes ton symbole avec le format qui va, genre :
    [e.Item.Cells(5).Text = String.Format("{0:C}", CDec(e.Item.Cells(5).Text))][/code]

  3. #3
    Membre du Club Avatar de liliprog
    Inscrit en
    Juillet 2004
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par Dumontel
    Tu peux intercepter l'affichage de test data dans l'évenement item_databound, tu castes en string et tu rajoutes ton symbole avec le format qui va, genre :
    [e.Item.Cells(5).Text = String.Format("{0:C}", CDec(e.Item.Cells(5).Text))][/code]
    Ok J'ai compris que l'évènement itemDataBound pouvait m'aider à résoudre mon problème.
    Maintenant j'ai du mal à comprendre ta ligne de code!!
    Pour selectionné tous mes éléments de la colonne prix je fais quoi?
    ça selectionne le contenu de la cellule ayant pour index 5 c'est bian ça?

    ma colonne prix se trouve à la 3ème colonne.
    Je vois pas comment récupérer les valeurs de ma colonne et leur concatnéner le signe €!!

    Please help

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    L'évenement est déclenché pour chaque ligne de ta datagrid
    donc tu n'as qu'a pointer sur l'élément de ta ligne à l'index 2 ( = 3éme colonne), récupérer sa valeur, et utiliser la fonction "format" de l'objet string, en lui demandant un format de type "currency" ("{0:C}") ça donne à peu près ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e.Item.Cells(2).Text=String.Format("{0:C}",e.Item.Cells(2).Text)
    ps: le code en VB et en C# c'est pareil

  5. #5
    Membre régulier

    Inscrit en
    Novembre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 42
    Points : 100
    Points
    100
    Par défaut
    Une autre solution consiste à passer ton format directement à ta colonne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:BoundColumn DataField="Montant" HeaderText="Montant" DataFormatString="{0:C}">
    Pas besoin de t'embeter avec le ItemDatabound surtout si c'est juste pour formatter un montant

  6. #6
    Membre confirmé Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Bonsoir

    Il me semble que la meilleure soluce est celle d'ankou2005. Mais je crois qu'il faut aussi indiquer le code langue à utiliser en mettant les lignes suivantes dans le code-behind.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private CultureInfo lngCur = new CultureInfo("fr-FR");
    Thread.CurrentThread.CurrentCulture = lngCur;
    Je fais cela dans le cadre d'une appli web multilangue et ça marche très bien. Je suppose qu'il doit être possible de récupérer le code langue du windows installé sur la machine.

    En espérant t'avoir aidé.
    Christophe B.

  7. #7
    Membre du Club Avatar de liliprog
    Inscrit en
    Juillet 2004
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    Je trouve aussi que la solution d'ankou2005 soit la plus simple. J'ai intégrer le code indiqué dans le mien mais là surprise aucun changement au niveau de mon datagrid. C'est comme si le fait de rejouter DataFormatString={0;C} n'avait rien changé.

    Est ce normal? j'ai peut etre oublié une partie ou quelques chose....

    Merci

  8. #8
    Membre régulier

    Inscrit en
    Novembre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 42
    Points : 100
    Points
    100
    Par défaut
    c'est peut etre une faute de frappe dans ton post mais la syntaxe c'est {0:C} et pas {0;C}

  9. #9
    Membre du Club Avatar de liliprog
    Inscrit en
    Juillet 2004
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    Mille excuse je me suis trompé en rédigeant mon message mais dans mon code c'est bien {0:C}

  10. #10
    Membre régulier

    Inscrit en
    Novembre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 42
    Points : 100
    Points
    100
    Par défaut
    tu peux me mettre la ligne que tu as dans ton aspx pour la colonne qui est censée afficher un €

    voir meme tout le code aspx de ton datagrid pour essayer de trouver où ca ne va pas

  11. #11
    Membre du Club Avatar de liliprog
    Inscrit en
    Juillet 2004
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    Voici le code uniquement de la colonne prix:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:BoundColumn DataField="prixHT" SortExpression="prixht" HeaderText="Prix HT"
    										DataFormatString="{0:C}">
    										<HeaderStyle Font-Size="X-Small" Width="20%"></HeaderStyle>
    										<ItemStyle HorizontalAlign="Center"></ItemStyle>
    									</asp:BoundColumn>
    En fait, en mettant juste DataFormatString="{0:C}" le programme sait qu'il faut mettre le signe € à coté du montant à afficher?
    ça me parait suspect...

    Et encore merci pour ton aide

    Il ne faut pas que je rajoute dans mon fichier web.config un attribut de culture qui spécifie que c'est l'euro?

  12. #12
    Membre régulier

    Inscrit en
    Novembre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 42
    Points : 100
    Points
    100
    Par défaut
    Essaye comme l'a suggéré elbj de spécifier la culture (il me semblait qu'il y en avait toujours une de spécifier par défaut mais je me trompe peut etre)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
    à mettre dans le page_load dans un premier temps pour voir si ca marche avec.
    (Faut pas oublier System.Globalization comme namespace)

  13. #13
    Membre du Club Avatar de liliprog
    Inscrit en
    Juillet 2004
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 135
    Points : 61
    Points
    61
    Par défaut
    Bon en fait j'ai essayé de rajouter la culture dans page_load pui sapres dans le fichier web.config et aucun changement.

    j'ai alors essayé de rajouter directement le signe euro à l'interieur du format ce qui donne ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <asp:BoundColumn DataField="prixHT" SortExpression="prixht" HeaderText="Prix HT"
    										DataFormatString="{0:C}€">
    Et grace à ce code j'obtient bien le resultat recherché.

    Merci :o

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insérer par programmation une valeur dans une colonne d'un Datagrid.
    Par Jean_dick15 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/04/2007, 15h32
  2. insertion des valeurs dans une colonne
    Par freestyler1982 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 24/01/2007, 16h38
  3. Réponses: 6
    Dernier message: 10/08/2006, 15h45
  4. Réponses: 3
    Dernier message: 16/05/2006, 14h47
  5. INTERBASE 5.5 insertion dans une colonne BLOB
    Par mariustrezor dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/10/2004, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo