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#] Comment évaluer un double avec la fonction eval JavaScript ?


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut [C#] Comment évaluer un double avec la fonction eval JavaScript ?
    BOnjour à tous,
    Je ne sais pas trop s'il faut poster sur le forum javascript ou celui-ci. J'ai choisi celui-là.

    Mon problème, c'est l'évaluation d'un double par la fonction eval de javascript.

    J'ai le code suivant: (en gras, là où ça coince !!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    
        protected void View1_Load(object sender, EventArgs e)
        {
            double a = double.Parse(VIEW1_DETAILVIEW_NB_SITES_WHICH_FILLED.Rows[0].Cells[0].Text);
            double b = double.Parse(VIEW1_DETAILVIEW_NB_SITES.Rows[0].Cells[0].Text);
            double c = a / b;
            double res = Math.Round(c, 2, MidpointRounding.ToEven);
            VIEW1_DETAILVIEW_PERCENT_CSG_OK.Rows[0].Cells[0].Text = res.ToString() + " %";
            VIEW1_DETAILVIEW_PERCENT_CSG_OK.FooterText="jhjh";
            ClientScript.RegisterClientScriptBlock(typeof(string), "1", "<script language='javascript'>\n"+
                "function helloWorld()\n{"+
                "var a=eval(\"" + res + "\");alert(a);" +            "var greenBorder = eval(\"121 * a\");\n" +
                "alert(greenBorder);"+
                "document.getElementById('VIEW1_DIV_PERCENT_CSG_OK').style.borderLeftWidth=greenBorder;\n" +
                "document.getElementById('VIEW1_DIV_PERCENT_CSG_OK').innerHTML=greenBorder;}\n" +
                "</script>\n");
        }
    en fait, res vaut 0,02 mais la méthode eval de javascript me ressort 2

    Je ne comprends pas pourquoi ???

    Auriez vou une explication ? Une solution ??

    Merci pour vos réponses !
    tout le monde est d'accord pour critiquer la pensée unique

  2. #2
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Salut LE NEINDRE.

    Bizarre ton histoire, essai sur une nouvelle page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    double res = 0.02;
            ClientScript.RegisterClientScriptBlock(typeof(string), "1", "<script language='javascript'>\n" + "var a=eval(\"" + res + "\");alert(a);</script>\n");
    Mehdi Feki : Modérateur .Net

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Bonjour mehdi_tn,

    Je viens à l'instant de voir ce qui n'allait pas !
    eval comprenait mal les décimaux à virgule. Mais mieux avec des points.

    Donc en faisant cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
        protected void View1_Load(object sender, EventArgs e)
        {
            double a = double.Parse(VIEW1_DETAILVIEW_NB_SITES_WHICH_FILLED.Rows[0].Cells[0].Text);
            double b = double.Parse(VIEW1_DETAILVIEW_NB_SITES.Rows[0].Cells[0].Text);
            double c = a / b;
            double res = Math.Round(c, 2, MidpointRounding.ToEven);
            
            VIEW1_DETAILVIEW_PERCENT_CSG_OK.Rows[0].Cells[0].Text = res.ToString() + " %";
            ClientScript.RegisterClientScriptBlock(typeof(string), "1", "<script language='javascript'>\n"+
                "function helloWorld()\n{"+
                "var a=eval(\"" + res.ToString().Replace(',', '.') + " \");alert(a);" +            "var greenBorder = eval(\"document.getElementById('VIEW1_DIV_PERCENT_CSG_OK').offsetWidth * " + res.ToString().Replace(',', '.') + "\");\n" +
                "alert(greenBorder);"+
                "document.getElementById('VIEW1_DIV_PERCENT_CSG_OK').style.borderLeftWidth=greenBorder;\n" +
                "document.getElementById('VIEW1_DIV_PERCENT_CSG_OK').innerHTML=greenBorder;}\n" +
                "</script>\n");
        }
    ça fonctionne !!

    Il fallait remplacer la "," par "." pour que le evaluation fonctionne bien.

    Merci pour ta réponse !!

    Bonne journée.
    tout le monde est d'accord pour critiquer la pensée unique

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/06/2009, 11h40
  2. Réponses: 2
    Dernier message: 01/12/2008, 14h18
  3. Réponses: 11
    Dernier message: 07/03/2008, 11h37
  4. Réponses: 9
    Dernier message: 22/03/2007, 10h58
  5. Réponses: 1
    Dernier message: 16/03/2007, 17h30

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