Partage
  • Partager sur Facebook
  • Partager sur Twitter

plugin dataTables + suppression tableau

Sujet résolu
    23 août 2011 à 17:49:24

    Bonjour,

    je vous expose mon problème :
    je charge un premier tableau avec le plugin et par la suite je voudrais l'effacer puis charger un nouveau. Malheureusement, quand j'essaye j'ai ce message d'erreur

    DataTables warning (table id = 'example'): Cannot reinitialise DataTable.
    
    To retrieve the DataTables object for this table, please pass either no arguments to the dataTable() function, or set bRetrieve to true. Alternatively, to destory the old table and create a new one, set bDestroy to true (note that a lot of changes to the configuration can be made through the API which is usually much faster).


    j'ai bien passé l'argument bDestroy à true mais rien à faire

    Quelqu'un aurait-il une idée ?

    merci d'avance

    PS : je ne maitrise pas jquery mais je n'ai aucun problème avec javascript

    EDIT : j'ai ce message aussi quand le tableau est trop long plus de 50.000 lignes
    • Partager sur Facebook
    • Partager sur Twitter
      23 août 2011 à 17:54:04

      Tu nous aiderais beaucoup si tu nous mettais la partie du code source correspondante. :)
      • Partager sur Facebook
      • Partager sur Twitter
        23 août 2011 à 17:59:51

        voici la fonction que j'utilise pour créer mon tableau et ensuite charger les données dans le plugin
        function read(oData)
        {
        	var tableau=document.getElementById('tableau');
        	tableau.innerHTML="";
        
        	var nodes=oData.getElementsByTagName("elem");
        	for(var i=0;i<nodes.length;i++)
        	{
        		var ligne=document.createElement("tr");
        		
        		var colonneEnr=document.createElement("td");
        		var enregistrement=nodes[i].getElementsByTagName('enr')[0].firstChild.nodeValue;		
        		colonneEnr.appendChild(document.createTextNode(enregistrement));
        		ligne.appendChild(colonneEnr);
        		
        		var operation=nodes[i].getElementsByTagName('ope')[0].firstChild.nodeValue;
        		var colonneOpe=document.createElement("td");
        		colonneOpe.appendChild(document.createTextNode(operation));
        		ligne.appendChild(colonneOpe);
        
        		var reglement=nodes[i].getElementsByTagName('reg')[0].firstChild.nodeValue;
        		var colonneReg=document.createElement("td");
        		colonneReg.appendChild(document.createTextNode(reglement));
        		ligne.appendChild(colonneReg);
        		
        		var etablissement=nodes[i].getElementsByTagName('etab')[0].firstChild.nodeValue;
        		var colonneEtab=document.createElement("td");
        		colonneEtab.appendChild(document.createTextNode(etablissement));
        		ligne.appendChild(colonneEtab);
        		
        		var guichet=nodes[i].getElementsByTagName('guic')[0].firstChild.nodeValue;
        		var colonneGuic=document.createElement("td");
        		colonneGuic.appendChild(document.createTextNode(guichet));
        		ligne.appendChild(colonneGuic);
        		
        		var compte=nodes[i].getElementsByTagName('comp')[0].firstChild.nodeValue;
        		var colonneComp=document.createElement("td");
        		colonneComp.appendChild(document.createTextNode(compte));
        		ligne.appendChild(colonneComp);
        		
        		var beneficiaire=nodes[i].getElementsByTagName('ben')[0].firstChild.nodeValue;
        		var colonneBen=document.createElement("td");
        		colonneBen.appendChild(document.createTextNode(beneficiaire));
        		ligne.appendChild(colonneBen);
        		
        		var banque=nodes[i].getElementsByTagName('ban')[0].firstChild.nodeValue;
        		var colonneBan=document.createElement("td");
        		colonneBan.appendChild(document.createTextNode(banque));
        		ligne.appendChild(colonneBan);
        		
        		var matric=nodes[i].getElementsByTagName('mat')[0].firstChild.nodeValue;
        		var colonneMat=document.createElement("td");
        		colonneMat.appendChild(document.createTextNode(matric));
        		ligne.appendChild(colonneMat);
        		
        		var montant=nodes[i].getElementsByTagName('mon')[0].firstChild.nodeValue;
        		var colonneMon=document.createElement("td");
        		colonneMon.appendChild(document.createTextNode(montant));
        		ligne.appendChild(colonneMon);
        		
        		tableau.appendChild(ligne);
        	}
        
        //c'est ici que je charge le plugin
        	$('#example').dataTable({
        		"sScrollY": "400px",
        		"bPaginate": false,
        		
        	});
        }
        
        • Partager sur Facebook
        • Partager sur Twitter
          23 août 2011 à 18:24:52

          Outch, bon d'abord un petit conseil, une fonction aurait été préférable. Tu as du code qui se répète est c'est très malsain. DRY !!! (Don't Repeat Yourself).
          Tu gagneras en performance (débuggage, modification) à scinder ton code.
          Je te rediriges vers ce que tu veux :
          http://www.datatables.net/release-data [...] e_tables.html
          • Partager sur Facebook
          • Partager sur Twitter
            23 août 2011 à 20:31:31

            j'ai essayé cette méthode sans succès également

            EDIT :
            j'ai trouvé la solution, il suffisait de rajouter cette fonction au début de ma fonction read

            function del()
            {
            	$(document).ready(function() {
            		oTable = $('#example').dataTable();
            		oTable.fnDestroy();
            	} );
            }
            
            • Partager sur Facebook
            • Partager sur Twitter

            plugin dataTables + suppression tableau

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown