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

AJAX Discussion :

Ajouter une colonne à une <TABLE>


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 41
    Points : 17
    Points
    17
    Par défaut Ajouter une colonne à une <TABLE>
    Bonjour à tous.
    Je démarre un projet en Javascript et ajax, je suis novice en ajax.
    Je sais que cela sert à rafraichir des données sans recharger toute la page.
    J ai avec torontoise récupérer les sources sur le serveur.
    A la Racine du www j ai index.html.
    J ai identifier le tableau (balise html table avec un id) que je dois mettre à jour avec une nouvelle colonne.

    Mais dans le index.html il y a que la balise table.
    Le contenu de la balise est vide.
    J ai donc essayer de chercher dans les sources js comment on alimentait ce tableau mais je n ai pas trouvé.
    Peut-être pourriez vous m aider pour orienter ma recherche.

    Dois je rechercher avec le nom de l id du table ?
    Dois je recherche les scripts ajax ?

    Merci de m aiguiller.
    Je vais en parallèle regarder les cours ajax.

    A bientôt

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    Bonjour,

    Il va falloir nous montrer le code Html/Javascript et PHP afin qu'on puisse comprendre comment tu veux alimenter le tableau, au chargement de la page ou bien en remplissant un formulaire ou en cliquant sur un boutton ...?

    as-tu écrit un code PHP/Javascript/Html ou pas ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Hello toufik et merci de ta réponse.

    D apres ce que j ai vu le tableau que je dois alimenter est recharger en ajax au changement de valeur dans une Listbox.

    Ce que je comprends pas c est que j ai pas d appel au Javascript dans le head du html.

    Il y a plein de fichier javascript et je sais pas ou chercher pour faire ma modification.

    Comment ajax accède à la balise table id = id.

    C est ce que j aimerai savoir pour faire des recherche dans les fichiers js.

    Pour l instant je n ai rien ecris encore.
    Je dois faire une évolution ajout d une colonne dans le table cité ci dessus mais je trouve pas a quel endroit on alimente ce table

    Et comme je l ai dis il devrait avoir une balise script dans le head du html mais ya rien.
    Je pense que c est ce que restitue le serveur
    Ta une idée ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    En fait je comprends pas comment ajax accède à une balise html ( ici table) pour l alimenter je me doute que c est avec le id du table mais je le trouve nul part dans le code

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    Bonjour,

    Pour trouver la fonction qui lance ajax dans les scripts js, tu devrais chercher document.getElementById("idTable") ou bien $("#idTable") si jQuery est utilisé .

    Ouvres le fichier js dans lequel tu veux chercher, puis appuies sur CTRL+F, une zone de texte est affichée permettant de faciliter un peu ta recherche...

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Ok je comprends je getelement merci je vais commencer par ca.
    Si je trouve pas je vous post le code lundi merci beaucoup

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Toufik,
    comme convenu le fichier html ci-joint

    la ou je dois ajouter ma colonne c'est dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                                <table id="datatable">
                                    <thead>
                                    </thead>
                                </table>
    dans le bas de la page on fait appel a différent script je ne retrouve pas de getelementbyid.

    Une idée ?
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    Bonjour,

    D'après ce que je vois, l'alimentation de la <table id="datatable"> est géré par le plugin dataTables et c'est dans le fichier js/init.js que tu dois chercher une ligne du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $("#datatable").dataTable(....);
    plus précisément dans l'option columns qui contient les colonnes de la table.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Merci à toi, j'avance mais ce n'est pas dans init.js c'est dans app.js que je met ci-joint que je trouve le datatable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    datatable_ = $('#datatable').DataTable({
       data: dataForTable,
       columns: header,
       columnDefs: [
             {
                    "targets": hiddendataJourCol,
                    visible: false
             }
    Comment alimente-il les colonne avec "header".

    De plus le fichier php appellé dans le code ne correspond pas a ma table dans la base.

    Merci
    Fichiers attachés Fichiers attachés
    • Type de fichier : js app.js (41,2 Ko, 39 affichages)

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Toufik,

    sais tu ou je dois modifier
    pour lui ajouter la nouvelle colonne ?

    Merci beaucoup

  11. #11
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    Ok, je vois que la variable header est initialisée juste un peu au dessus (ligne 248) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $.each(dataForTable[0], function (head, value) {
          header.push({"data": head, "title": head});
    });
    et alimentée par la variable dataForTable[0] que l'on trouve aussi juste au dessus et dans le callback done d'une requête ajax (ligne 210):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $.ajax({
        url: 'https://app-gms-decisionnel.ovh/PHP/DATA_IMPACT/getDataByMagasin.php',
        ......,
    })
    .done(function(data){
        console.log("data est :",data);
       /* ce console.log(data); doit être visualiser dans la console du navigateur pour voir le contenu de data */
       ....
       dataForTable.push(tempData);
    });
    la ligne console.log(data); permet d'afficher le contenu de data dans la console du navigateur, ça devrait t'afficher un tableau d'objets et ce sont les données utilisées pour alimenter la table.

    Donc maintenant on sait que c'est le fichier PHP "PHP/DATA_IMPACT/getDataByMagasin.php" qui traite les données, il va falloir me montrer son code afin qu'on puisse ajouter la colonne et sa valeur.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    C'est super gentil Toufik merci bcp.

    Voici le fichier les deux scripts php dont on a besoin.

    J'ai fait une copie de la table suivi quotidien drive en question dans la base de données, elle contient la nouvelle colonne.

    j'ai modifié sync.php et je pointe a présent sur la table avec la nouvelle colonne.

    Et quand je fait refresh sur mon navigateur le tableau n'affiche que les premières colonnes de l'entete mais plus les données.

    Il faut faire d'autres modif si ta une idée ?

    Edit : Quand je regarde le contenu dans la cosole du navigateur je m'apercois que le width (css) de la nouvelle colonne est celui de la colonne d'après. La colonne d'après a disparu.
    En fait ma nouvelle colonne a remplacer ma dernière colonne.

    La nouvelle colonne doit se trouver donc maintenant a l'avant dernière colonne.
    Est-ce que je suis clair ?
    Fichiers attachés Fichiers attachés

  13. #13
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    Il y'a bien un id envoyé par ajax data: {id: selectedOutnumber} et sa valeur est récupérée par selectedOutnumber :
    selectedOutnumber = localStorage.getItem('selectMagasin').split(" - ")[localStorage.getItem('selectMagasin').split(" - ").length - 1 ];.

    Cela dit que l'existence de la variable localStorage.getItem('selectMagasin') doit être obligatoirement définie afin que le script fonctionne correctement, car le fichier PHP examine sa valeur if (isset($_GET["id"])) {...} else {die("Err: No ID !");}.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    oui c'est l'id du magasin.
    Ensuite dans le tableau on affiche les produits donc jusque la je pense que ca va.

    En fait j'ai modifier la requete SQL dans sync.php et a présent j'ai bien l'entete de ma nouvelle colonne par contre la dernière colonne n'est plus la et les informations du table ne sont plus dispo.
    Enfin mon table est décalé sur la gauche et le barre scroll horizontale ne s'affiche plus.

    j'espère que tu pourra m'aider

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    je pense que c'est ici :

    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
    20
    21
    22
                //On place les données dans un tableau + on transforme dataJour en données sous forme de colonne
                $.each(data, function (i, line) {
                    var tempData = {};
                    $.each(line, function (head, value) {
                        if (head === "dataJour") {
                            try {
                                value = value.split("'").join('"');
                                var json = JSON.parse(value);
                            } catch (e) {
                                console.error(e);
                                console.log(value)
                            }
                            $.each(json, function (jr, statut) {
                                tempData[jr] = statut;
                                colJr.push(jr);
                            });
                        } else {
                            tempData[head] = value;
                        }
                    })
                    dataForTable.push(tempData);
                });
    Si on est pas sur la dernière colonne "dataJour" on alimente tempdata[head] avec value mais je vois pas comment est alimenté value ?

  16. #16
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    Bonjour,

    head et value sont 2 paramètres de la fonction callback parcourant chaque ligne de l'objet line en utilisant la boucle $.each :$.each(line, function (head, value), le premier représente le nom de la colonne et le deuxième est sa valeur.

    Ce qui devrait t'intéresser le plus c'est la gestion de visibilité de colonnes à header.length - 6 dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (var i = nbColWithoutdataJour; i < header.length - 6; i++) {
        hiddendataJourCol.push(i);
    }
    Mets un console.log juste avant la boucle for pour voir le contenu des variables nbColWithoutdataJour dataForTable et regarde ce que ça donne au console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    console.log("nbColWithoutdataJour :",nbColWithoutdataJour,", dataForTable :",dataForTable);
    for (var i = nbColWithoutdataJour; i < header.length - 6; i++) {...}
    Le le tableau hiddendataJourCol ajoute l'index de chaque colonne ayant l'index existant dans l'intervalle nbColWithoutdataJour<=indexColonne<header.length-6 et donc la masquer, vu que c'est utilisé dans columnDefs avec l'option visible:false:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    columnDefs: [
      {
          "targets": hiddendataJourCol,
          visible: false
      }
    ]
    Plus loin encore ligne 269 où on trouve le 6 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    'rowCallback': function (row, data, index) {
        for (var i = nbColWithoutdataJour; i < nbColWithoutdataJour + 6; i++) {....
        }
    Comme il est toujours nécessaire de visualiser les erreurs du callback fail d'ajax et utiliser des expressions personnalisées et lisibles, par exemple le console.error de la ligne 295 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    .fail(function (e) {
            console.error("Erreur ajax ligne 295 :",e.responseText);//voir ce que ça donne cette ligne...
    })
    L'outil de développement du navigateur est très utile aussi pour voir les réponses des appels ajax sous les onglets Network et le sous onglet Response.

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Bonjour Toufik,

    j'ai deux erreurs dans mon console log, header is undefinided et j'ai également une erreur dans mon fichier json mais je ne vois pas ce qu'il y a, je cherche.
    je te met en pièce jointe un screen du console log peut-etre que tu peux m'aider ?

    Merci.
    Images attachées Images attachées  

  18. #18
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Toufik, c'est bon c'était une erreur dans mon fichier Json, il manquait l'accolade de fermeture.

    C'est résolu, merci énormément tu m'as bien aiguillé.

    Bon courage et à bientôt.

  19. #19
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    Bonjour,

    Pour la première erreur, le message dit que l'objet json est mal formaté. à droite de l'erreur ça t'affiche la ligne 234 de app.js, si tu cliques dessus le navigateur pointe sur la ligne correspondante.

    Tu peux me donner un id du magasin existant dans la base afin que je puisse tester la requête ajax en locale ?

  20. #20
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Hello,

    ce n'est pas tout a fait terminer je dois a présent ajouter une autre colonne en fin de tableau et ce pour chaque ligne.
    Cette nouvelle colonne contiendra un champs de saisie.

    J'ai utilisé append comme ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //Ajouter le champs de saisie du plan d'action
    $tr.append($("<td>").append($("<input>").attr({'type': 'text', 'id': 'action', 'style': 'background-color:inherit;text-align:center;width:50px !important'});
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    function updateData() {
            selectedMagasin = localStorage.getItem('selectMagasin');
            selectedEnseigne = localStorage.getItem('selectEnseigne');
            selectedOutnumber = localStorage.getItem('selectMagasin').split(" - ")[localStorage.getItem('selectMagasin').split(" - ").length - 1 ];
            //changement du logo (ou suppression si non renseigne)
            console.log(selectedEnseigne)
            $('.logo-enseigne').empty();
            for (var i = 0; i < logo.length; i++) {
                console.log(selectedEnseigne, logo[i][0])
                if (selectedEnseigne == logo[i][0]) {
                    if (logo[i][1] != '') {
                        // .split(" ").join("") = equivalent du trim en + rapide
                        $('.logo-enseigne').html('<img src="../img/logos/' + logo[i][1].split(" ").join("") + '" alt="Logo de ' + logo[i][0] + '" class="valign">');
                    } else {
                        $('.logo-enseigne').empty();
                    }
                }
            }
            console.log(selectedMagasin)
            $('.nom-magasin').text(selectedMagasin);
            setMenuTitle();
            // TODO, load data from serveur
            $.ajax({
                url: 'https://app-gms-decisionnel.ovh/PHP/DATA_IMPACT/getDataByMagasin.php',
                type: 'GET',
                cache: false,
                dataType: 'json',
                data: {
                    id: selectedOutnumber
                }
            }).done(function (data) {
                console.log(data)
                var dataForTable = [];
                var colJr = [];
                var header = [];
                var nbColWithoutdataJour = Object.keys(data[0]).length -1;
                var hiddendataJourCol = []; // table des jours à masqués, on garde 6 jours et on masque le reste
                var refsAbsorRupt = {};
                //On place les données dans un tableau + on transforme dataJour en données sous forme de colonne
                $.each(data, function (i, line) {
                    var $tr = $("<tr>");
                    var tempData = {};
                    $.each(line, function (head, value) {
                        if (head === "dataJour") {
                            try {
                                value = value.split("'").join('"');
                                var json = JSON.parse(value);
                            } catch (e) {
                                console.error(e);
                                console.log(value)
                            }
                            $.each(json, function (jr, statut) {
                                tempData[jr] = statut;
                                colJr.push(jr);
                            });
                        } else {
                            tempData[head] = value;
                        }
                        //Ajouter le champs de saisie du plan d'action
                        $tr.append($("<td>").append($("<input>").attr({'type': 'text', 'id': 'action', 'style': 'background-color:inherit;text-align:center;width:50px !important'});
     
                    })
                    dataForTable.push(tempData);
                });
                $.each(dataForTable[0], function (head, value) {
                    header.push({"data": head, "title": head});
                });
                console.log("nbColWithoutdataJour :",nbColWithoutdataJour,", dataForTable :",dataForTable,"header.length :",header.length);
                for (var i = nbColWithoutdataJour; i < header.length - 6; i++) {
     
                    hiddendataJourCol.push(i);
                }
                datatable_ = $('#datatable').DataTable({
                    data: dataForTable,
                    columns: header,
                    columnDefs: [
                        {
                            "targets": hiddendataJourCol,
                            visible: false
                        }
                    ],
                    deferRender: true,
                    scrollX: 800,
                    scroller: {
                        rowHeight: 11
                    },
                    "lengthMenu": [[10, 20, 50, 100, -1], [10, 20, 50, 100, "Tout"]],
                    "pageLength": 20,
                    'rowCallback': function (row, data, index) {
                        for (var i = nbColWithoutdataJour; i < nbColWithoutdataJour + 6; i++) {
                            var sColor = "";
                            switch (data[header[i + hiddendataJourCol.length].data]) {
                                case "Absent":
                                    sColor = "yellow";
                                    break;
                                case "Present":
                                    sColor = "green";
                                    break;
     
                                case "En rupture":
                                    sColor = "red";
                                    break;
     
                                default:
                                    sColor = "yellow";
                                    break;
                            }
                            $(row).find('td:eq(' + i + ')').css('background-color', sColor);
                        }
                    }
                });
     
                ajaxDiff();
                ajaxLienDrive();
            }).fail(function (e) {
                console.error("Erreur ajax ligne 295 :",e.responseText);//voir ce que ça donne cette ligne...
                console.error(e)
            })
            // Remplir datatable
            // Virer loading
            $('#loading-wrapper').fadeOut(400);
        }
    Mais ça ne m'ajoute pas la colonne.

    une idée ?

Discussions similaires

  1. Impossible d'ajouter une table
    Par Stopher dans le forum Outils
    Réponses: 10
    Dernier message: 03/08/2007, 07h58
  2. ajouter une table avec vb6
    Par thunderpat dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 13/06/2007, 09h54
  3. ajouter une table a une autre
    Par LeXo dans le forum Access
    Réponses: 2
    Dernier message: 05/03/2007, 21h12
  4. [VB.NET] Comment ajouter une table dans une base Access ?
    Par Hakki dans le forum Accès aux données
    Réponses: 1
    Dernier message: 22/09/2006, 16h19
  5. Access m'ajoute une table ds les relations ?!
    Par Fredd_b dans le forum Access
    Réponses: 6
    Dernier message: 06/01/2006, 17h39

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