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 :

Question sur Morris.js et ASP .Net, comment utiliser cette libraire ?


Sujet :

ASP.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Argentine

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Question sur Morris.js et ASP .Net, comment utiliser cette libraire ?
    D abord je m excuse, du a mon ortographie, je ne suis pas francais, mais je parle un petit peu le francais. ...
    La question est la suivante:
    Ici vous avez le lien a Morris.js http://www.oesmith.co.uk/morris.js/ ..
    Je voudrais l utiliser avec ASP .Net.
    Je sais que Morris.js attend un objet en format JSON, mon probleme c est que je ne sais pas comment le faire avec Asp .Net.
    Quelq 'un seras aimable de me donner un example pratique ?
    En utilisant par example la base de donne AdventureWorks ou n importe quel base de donne ? . Le but c est de m expliquer comment je fait pour faire un QUERY, contre une base SQL Server, par example, recevoir le resultat de Query, le tranformer en JSON et utilise Morris.js pour generer de graphique Donuts, par example, je vous assure que je cherche par tout, et je demande en plusieur forum en espagnol, mais sans reponse clair, sinon vague, tel que ...." ee oui utilise JSON , ou ..... c est question de serialize l objet ...etc etc....oui d accord, tres bien votre theorie, mais comment ? ..un exemple ? ....

    De toute facon, je vous remerci ,....et je sais que est mauvais pour les yeux, me lire !!! ............. ....
    J attend votres reponses !!

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Salut,

    La serialisation/deserialisation permet de "sauvegarder" l'état d'une instance d'objet. Si j'ai l'objet suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Personne
    {
          public string Nom { get; set; }
    }
    Une instance sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Personne toto = new Personne();
    toto.Nom = "pepeyo";
    La serialisation de cette instance donnera en XML quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Personne>
          <Nom>pepeyo</Nom>
    </Personne>
    La serialisation JSON, elle, donnera simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    { "Nom" : "pepeyo" }
    JSON est plus léger, moins verbeux que XML.

    Pour transformer un objet Personne en sa serialisation JSON, tu peux utiliser la classe DataContractJsonSerializer.

    Jette un oeil ici et . Ce sont des exemples concrets.

    A+

  3. #3
    Membre chevronné

    Profil pro
    Chef de Projet / Développeur
    Inscrit en
    Juin 2002
    Messages
    611
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de Projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2002
    Messages : 611
    Points : 2 080
    Points
    2 080
    Par défaut
    Bonjour,

    Je ne connais pas morris.js, mais à priori (au vu de l'exemplede la page d’accueil) cette librairies accepte aussi de purs objets javascript comme paramètres.

    Or c'est très facile, en ASP.Net de transformer un objet C# en objet javacript, (via JSON, jQuery et les WebMethod).

    Coté serveur, dans le code de ta page (ou d'une autre dédiée à ce genre de services) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [WebMethod(true)]
    public static MonTypeCSharp GetMesDonnees(string sEcho, int iDisplayStart, int iDisplayLength )
    {
        MonTypeCSharp retour = new MonTypeCSharp();
        // contruction des données de l'objet
        return retour ;
    }
    MonTypeCSharp, doit être une classe simple (sans properties calculées ou autres joyeuseté du genre), pour justement ne pas avoir à s'occuper de la sérialisation JSON qui va devenir transparente.

    Attention au static, c'est très important.
    Le true dans [WebMethod(true)], indique que ma méthode peux accéder à la Session.

    Coté client avec jQuery

    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
     
                var pData = "{'sEcho': '" + MonParamEcho + "', " +
                            "'iDisplayStart':'" + MonParamStart + "', " +
                            "'iDisplayLength':'" + MonParamLength + "', " +
                            "' }";
                $.ajax({
                    "type": "POST",
                    "dataType": 'json',
                    "contentType": "application/json; charset=utf-8",
                    "url": "ma_page.aspx/GetMesDonnees",
                    "data": pData,
                    "success": function (msg) {
                        ConstruireGraphe(msg.d);
                    }
                });
    Ainsi, on appelle, de façon relativement transparente, une fonction C# depuis son code javascript.

    On peut passer des paramètres (mon pData) à sa méthode C# (attention, le nom des paramètres est case sensitive). En retour en cas de success, msg.d contient un pur objet javascript qui va être la réplique exacte (là aussi case sensitive) de la classe C# MonTypeCSharp.

    On passe par JSON, mais c'est totalement transparent.

    J'utilise cette méthode pour datatable.js (www.datatable.net) qui à la base n'est pas réellement fait pour.

    J'ai créé une classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class DataTableEcho
    {
            public string sEcho { get; set; }
            public int iTotalRecords { get; set; }
            public int iTotalDisplayRecords { get; set; }
            public List<List<string>> aaData { get; set; }
    }
    qui est la réplique de ce que datatable.js attend comme objet javascript.

    Fait un essai hors morris.js pour analyser (via firebug ou autre) la structure de l'objet reçu. Quand il ressemble à ce qu'il te faut, utilise le pour initialiser un appel à morris.js.

    Le soucis de cette méthode, c'est qu'en cas d'échec, (pb de casse dans le nom d'un paramètre, ou oubli du static devant la fonction etc..), on reçoit une erreur HTTP pas très indicative sur la nature réelle du problème et on s'arrache un peu les cheveux.

    La solution est de toujours commencer avec un appel super simple (pas de paramètres, par exemple) et quand, il fonctionne, complexifier pas à pas.

    En cas de gros volume chercher dans Google :
    <jsonSerialization maxJsonLength="500000">
    a mettre dans le web.config

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/11/2011, 08h34
  2. Réponses: 4
    Dernier message: 04/04/2011, 20h19
  3. ASP Net Comment avoir 2 Panels sur une meme page
    Par AirbusA330 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/06/2010, 12h20
  4. comment créer un drag & drop sur bouton parcourir en asp.net
    Par tilily dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 03/02/2009, 13h25

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