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 :

datatable draw une colonne apres un footerCallBack


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par défaut datatable draw une colonne apres un footerCallBack
    Bonjour,


    j'utilise une datable dans laquelle j'ai l'option:
    "render" qui va contrôler toutes les données de mon tableau pour vérifier si le format est correct

    Je peux changer le format de mes colonnes on changeant le type depuis mon footer (mon footer contient une liste déroulante de format)
    mon datable possède une fonction dans "footerCallBack" qui va recalculer le nombre d'erreur dans ma colonne. Par contre, je n'arrive pas a mettre à jour le contenu de ma table.

    ex:
    à l'origine j'ai une nombre "1233456" dans la cellule. ma colonne doit posséder que des caractères alphabétique donc en passant dans le "render" de ma datatable, ma cellule va devenir un "input type text" permettant de modifier le contenu de la cellule.
    je change dans le footer de ma colonne pour que le nouveau contrôle à appliquer soir "numérique". la cellule est maintenant correct, elle doit simplement contenir la valeur (sans le input type text).


    Il y a t'il un moyen de rappeler la fonction "render" de la datatable depuis le footerCallBack?
    sinon depuis le footerCallBack, je n'arrive pas à modifier le contenu de ma cellule.

    contenu du render:
    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
     
    'render': function (data, type, full, meta){
                    var data_id = content_header[meta['col']];
                    var data_content = '';
                    if(data_id in full){
                        data_content = escapeForTableDisplay(full[data_id]);
                    }
                    var formated_content = $('<div/>').text(data_content).html();
                    var format_error = 1;
                    if(data_id in lien_header) {
                        format_error = checkContentFormat(formated_content, lien_header[data_id]);
                    }
     
                    var output_display;
                    if(format_error > 0){
                        output_display = '<input type="text" style="text-align:center; background-color: red; color: white;" size="' + (formated_content.length + 4) + '" name="' + data_id + '" value="' + formated_content + '">';
                    } else {
                         output_display = formated_content;
                    }
                    return output_display;
     
                }
    contenu de mon FooterCallBack;
    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
     
    ,"footerCallback": function( tfoot, data, start, end, display ) {
                table.columns().every(function (){
                    var col_object = this;
                    var col_index = col_object.index();
                    var col_found_header = col_object.context[0].aoColumns[col_index].title;
                    var somme_erreur = data.reduce( function (a, b) {
                            var erreur_cellule = 1;
                            if((col_found_header in lien_header)&&(col_found_header in b)){
                                erreur_cellule = checkContentFormat($('<div/>').text(escapeForTableDisplay(b[col_found_header])).html(), lien_header[col_found_header]);
                            }
                            return parseInt(a) + erreur_cellule;
                        }, 0
                    );
                    var footer_content;
                    ....
                    $(col_object.footer()).html(footer_content);
                });
     
            }


    est-ce que quelqu'un peut m'aider? je ne sais pas si j'ai été clair...

    Merci!

    Léa.

  2. #2
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par défaut
    J'ai trouvé une solution,

    Dans ma function qui est appelée à la modification du footer, il y a un table.table().draw(). C'est lui qui déclenche le footerCallBack().
    à la place du "table.table().draw()"

    j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    table.rows().every(function(){
               var mline_value = table.row(this).data();
               table.row(this).data(mline_value).draw();
            });
    comme ça toutes les lignes se recharge. Le render est appelé. le contrôle est fait correctement.

    Problème, toutes les cellules de toutes les lignes sont contrôlées (ralenti énormément le processus du coup) alors que j'aimerai que seule la colonne que j'ai modifiée le soit.

    Si quelqu'un a une solution. je n'arrive pas a "Draw" une colonne en particulier.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/03/2010, 09h54
  2. [XL-2003] calcul d'une colonne après tri
    Par spico45 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/02/2010, 17h54
  3. Filtrer une dataTable sur une colonne
    Par beren.kei dans le forum Windows Forms
    Réponses: 17
    Dernier message: 12/01/2010, 17h57
  4. Calcul de la somme d'une colonne apres la derniere ligne non vide
    Par lilp1 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/06/2009, 11h14
  5. Affichage d'une colonne après migration
    Par fefe44 dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 04/03/2008, 19h56

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