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:
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
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; }
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.
Partager