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

jQuery Discussion :

Passage d'un tableau de string dans le ViewBag


Sujet :

jQuery

  1. #1
    Invité
    Invité(e)
    Par défaut Passage d'un tableau de string dans le ViewBag
    Bonjour,

    Mon site est en MVC3.
    Dans le but d'utiliser l'autocomplete de jQuery Ui je crée un tableau de string dans mon controller et le serialyze avec un JavascriptSerializer pour en suite le retrouver dans ma vue comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     var data = '@Html.Raw(ViewBag.Tab)';
    puis je remplis mon autocomplete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     var data = '@Html.Raw(ViewBag.Tab)';
    $(".auto").autocomplete({
       source: data
    });
    mais ça ne marche pas. Alors j'ai fait un
    je récupère un tableau tout beau ["elem1", "elem2",...]

    et lorsque je lie a la main l'autocomplete et le tableau, cela fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(".auto").autocomplete({
       source: ["elem1", "elem2",...]
    });
    Comment faire pour que cela marche avec le tableau venant du controlleur ?
    Merci
    Dernière modification par Invité ; 24/05/2013 à 16h02.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Idée : Assurez-vous que '@Html.Raw(ViewBag.Tab)' donne bien un Array JS avec isArray : http://api.jquery.com/jQuery.isArray/.

    if ( $.isArray( '@Html.Raw(ViewBag.Tab)' ) ){ ... }.

    Sinon essayez de transformer le résultat en un véritable Array JS avec http://api.jquery.com/jQuery.makeArray/

    var data = $.makeArray( '@Html.Raw(ViewBag.Tab)' );.

  3. #3
    Membre régulier Avatar de royto
    Homme Profil pro
    Développeur .Net & Web
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .Net & Web

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Points : 96
    Points
    96
    Par défaut
    il faut supprimer les quotes lors de ta déclaration de data sinon data est considéré comme une chaine de caractère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var data = @Html.Raw(ViewBag.Tab);

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    J'ai essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ( $.isArray(@Html.Raw(ViewBag.Tab)) )
    {
       alert('true');
       var data = @Html.Raw(ViewBag.Tab);
    }
    else
    {
       alert('false');
       var data = $.makeArray(@Html.Raw(ViewBag.Tab));
    }
    Je passe tout le temps dans le else et avec ou sans quotes au tour du @Html.Raw(ViewBag.Tab), le résultat est que je me retrouve avec une seule ligne contenant tout le tableau dans l'autocomplete.

    D'autres idées ?

    Edit: mon controller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var rames = (from s in Ctx.Rames select s.Name).ToArray(); // rames est un String[]
    var serializer = new JavaScriptSerializer();
    serialiser.serialize(rames);
    // A ce stade rames est toujours un String[].... serializer useless ?
    // Du coup je fais un ToString
    ViewBag.Rames = rames.ToString();
    Edit 2:
    Apres le $.makeArray(@Html.Raw(ViewBag.Tab));, j'ai fait un alert(data);. La pop up m'informe que data est un System.String[].

    Quand on aura trouvé la réponse, il serait peut etre bien de la faire apparaitre dans le FAQ...
    Dernière modification par Invité ; 27/05/2013 à 09h17. Motif: Détail sur le controller

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(".auto").autocomplete({
       source: $.makeArray( @Html.Raw(ViewBag.Tab) )
    });
    Vous devez logiquement obtenir un véritable Array JS de string, ce qui est la première forme acceptable par l'UI Autocomplete. Voir : http://api.jqueryui.com/autocomplete/#option-source

    La pop up m'informe que data est un System.String[].
    OK ! Un array de string !

    le résultat est que je me retrouve avec une seule ligne contenant tout le tableau dans l'autocomplete.
    La chose semble logique.

    Ne connaissant pas le langage utilisé et le MVC3, je ne peux pas comprendre ce qui vous dérange dans le résultat obtenu ni vous aider.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Voici la solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       $(".autoC").autocomplete({
          source: @Html.Raw(Json.Encode(ViewBag.Rames))
       });
    Pas besoin de isArra()y ou de makeArray().

    Merci pour votre aide

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

Discussions similaires

  1. [Jacob]Passage d'un tableau de string a une macro
    Par jumpman31 dans le forum Documents
    Réponses: 1
    Dernier message: 05/05/2008, 14h25
  2. Réponses: 6
    Dernier message: 08/10/2007, 13h50
  3. Réponses: 6
    Dernier message: 24/07/2006, 15h22
  4. [JpGraph] Passage d'un tableau en paramètre dans une URL pour JPgraph
    Par crazydiver_e2 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 16/01/2006, 16h15
  5. Ranger un tableau de String dans ma HashMap
    Par jeyce dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 26/08/2004, 22h41

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