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

Bibliothèques & Frameworks Discussion :

[BootStrap] Mise en forme d'un array dans une colonne


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut [BootStrap] Mise en forme d'un array dans une colonne
    Bonjour à tous,

    Je tente de mettre en place un tableau en utilisant Bootstrap Table (http://bootstrap-table.wenzhixin.net.cn).
    Ce tableau utilise des données au format Json.
    Dans une des colonnes de ce tableau, j'ai un array de valeurs (dont le nombre peut varier d'une ligne à l'autre).
    J'aimerais mettre en forme cet array avec des <span> pour chaque valeur.

    Pourriez-vous m'aider dans cette tâche ? (je pense à une boucle FOR, comme tenté dans le code ci-dessous, mais pour l'instant, je ne sais pas sur quelles variables la faire tourner)

    Voici où j'en suis avec des données bidon :
    http://jsfiddle.net/14wkr6ab/

    Sur mon serveur, les fonctions de formatage fonctionnent, mais pas sur ce JsFiddle : je comprends pas trop pourquoi ?

    Merci à vous !

    Sylvain M.

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

    Merci :
    • d'écrire (aussi) le code directement dans le contenu du message.
    • d'être plus précis


    1- Quelle est la question, précisément ?

    2- "...J'aimerais mettre en forme cet array avec des <span> pour chaque valeur..."
    Quel array ?

    3- "...les fonctions de formatage..."
    Quelles fonctions ? Pour formater quoi ?
    Dernière modification par Invité ; 15/06/2018 à 15h06.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut
    Merci jreaux62 de te pencher sur mon problème !

    Citation Envoyé par jreaux62
    Merci d'écrire (aussi) le code directement dans le contenu du message.
    Ok, je le mets ci-dessous !

    Citation Envoyé par jreaux62
    2- Quelle est la question, précisément ?
    La voici : quelle fonction me permettrait, à partir d'un array contenu dans un JSON utilisé en source d'un tableau (Bootstrap Table), de convertir cet array en autant de <span> que de valeurs de l'array.

    J'ai écrit cette fonction qui arrive à le faire avec un array indépendant du JSON, et en dehors du tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var liste = ["KML", "SHP", "MDB", "TXT", "GEOJSON", "DBF"];
     
    liste.forEach(createHTML);
     
    function createHTML(arrayItem, index, array) {
        var spanObj = '<span class="badge badge-info">' + arrayItem + '</span>'
        var div = document.createElement('div');
        div.innerHTML = spanObj;
        document.body.append(div);
    }
    Mais je ne sais pas comment faire cette fonction pour les valeurs à l'intérieur d'une colonne du tableau (row.l_ext dans mon exemple).

    Citation Envoyé par jreaux62
    3- "...les fonctions de formatage..."
    Quelles fonctions ? Pour formater quoi ?
    Les fonction "data-formatter", comme dans cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <th data-field="name" data-formatter="nameFormatter">Name</th>
    Encore merci de te pencher sur mon problème !

    Sylvain M.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut
    Je pensais à quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Fonction pour formater les valeurs de la colonne
    function BadgesFormatter(value, row, index) {
        return value.forEach(createSpan)
    }
     
    // Fonction pour créer les <span> à chaque item de l'array
    function createSpan(arrayItem, index, array) {
        var spanObj = '<span class="badge badge-info">' + arrayItem + '</span>'
        return spanObj;
    }
    Mais ça ne marche pas... J'ai ce message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: value.forEach is not a function[En savoir plus]
    et si je tente avec "row.l_ext.forEach(createSpan)", ça ne marche pas non plus...

  5. #5
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    let liste = ["KML", "SHP", "MDB", "TXT", "GEOJSON", "DBF"];
     
    for (let item of liste) {
      let spanObj = document.createElement("span");
      spanObj.className = "badge badge-info";
      spanObj.append(item);
      document.body.append(spanObj);
    }
    Voir createElement et append.

    En un seul .append() sur le body pour être plus efficace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    let liste = ["KML", "SHP", "MDB", "TXT", "GEOJSON", "DBF"];
    let spanArray = [];
     
    for (let item of liste) {
      let spanObj = document.createElement("span");
      spanObj.className = "badge badge-info";
      spanObj.append(item);
      spanArray.push(spanObj);
    }
    document.body.append(...spanArray);
    Voir spread.

    Si la syntaxe ... (spread) n’est pas supportée, on peut le faire à l’ancienne mais c’est moins beau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.body.append.apply(document.body, spanArray);
    Voir apply.

    En version fonctionnelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    let liste = ["KML", "SHP", "MDB", "TXT", "GEOJSON", "DBF"];
     
    document.body.append(...liste.map((item) => {
      let spanObj = document.createElement("span");
      spanObj.className = "badge badge-info";
      spanObj.append(item);
      return spanObj;
    }));
    Voir map.

    Quant au Fiddle, il ne marche pas pour une simple raison :
    TypeError: $(...).bootstrapTable is not a function
    Tu n’as pas inclus le plugin bootstrapTable. Tu l’aurais vu tout de suite si tu avais ouvert la console.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut
    Merci Watilin

    Je tiens à préciser, pour expliquer (non excuser) mon incompétence, que je ne suis pas du tout développeur, que je n'ai jamais eu un seul cours de développement, mais que mes "bidouilles" sur codes me sont très utiles
    Merci donc pour votre indulgence !

    Citation Envoyé par Watilin
    Quant au Fiddle, il ne marche pas pour une simple raison : [...] Tu n’as pas inclus le plugin bootstrapTable. Tu l’aurais vu tout de suite si tu avais ouvert la console.
    Bon, je ne comprends pas grand chose dans la console, mais SI, je l'avais ouvert !? Et je n'ai pas vu ce message d'erreur !?
    Et j'ai bien fait la référence au plugin dans la partie "Ressources" du Fiddle ???

    Du coup, je suis parti du Fiddle où les fonctions de formatage fonctionnent, et en ajoutant mon code, ça marche !
    Voici le lien du Fiddle : http://jsfiddle.net/7hf6c8d2/9/

    Tu verras que j'y ai intégré avec succès ta méthode que je suis en train d'essayer de comprendre.

    Mais ce que je ne vois vraiment pas, c'est comment faire tourner cette fonction sur les items de la colonne de mon tableau (data-field="l_ext").

    Pourriez-vous m'aider à y parvenir ?

    Merci encore !!!

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

Discussions similaires

  1. Mise en forme d'un texte dans une variable
    Par butheau dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/04/2013, 10h20
  2. mise en forme d'un texte dans une iframe
    Par kovrov dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 10/12/2010, 11h37
  3. Mise en forme de l'affichage dans une boucle
    Par sam01 dans le forum Langage
    Réponses: 6
    Dernier message: 20/05/2010, 16h50
  4. Mise en forme de l'affichage dans une liste
    Par nunurs83 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/05/2007, 20h47
  5. [MySQL] Mise en forme de la date dans une ligne
    Par Donald08 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 01/08/2006, 13h28

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