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 !

  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 : 42
    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");

  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.

+ 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