2013-04-05 12 views
9

So initialisieren Sie eine jQuery-Datentabelle neu? Ich habe sogar versucht, das Tabellenelement zu entfernen. Immer noch wird diese Tabelle angezeigt. Mein Code ist wie folgt:So initialisieren Sie die jquery-Datentabelle

function removeExistingDataTableReference(tableid) 
{ 
    if(oTable !=null) 
    { 
     oTable.fnDestroy(); 
    } 

    if(document.getElementById(tableid)){ 
     document.getElementById(tableid).innerHTML=""; 
    } 

    oTable=null; 

    try 
    { 
     if(oTable !=null) 
     { 
      //oTable.fnDestroy(); 
      alert("error in fndestroy"); 
     } 

     oTable=null; 

     if(document.getElementById(tableid)){ 
      document.getElementById(tableid).innerHTML=""; 
     } 

     if(document.getElementById("FTable")) 
     { 
      removeElement(document.getElementById("FTable")); 
     } 

    } 
    catch(e) 
    { 
     alert("Error happend:"+e.message); 
    } 

} 

function removeElement(element) 
{ 
    try 
    { 
     var elem = document.getElementById('FTable'); 
     elem.parentNode.removeChild(elem); 
     //ert(element.parentNode.id); 
     //element.parentNode.removeChild(element); 
     alert("removed"); 
     return true; 
    } 
    catch(e) 
    { 
     alert(e.message); 
    } 

    return false; 

} 

Wie kann ich das tun? Nach der Schaltfläche "Suchen" wird die Klick-Tabelle geladen. Wenn ich mit einem anderen Suchparameter suche, sollte die Tabelle wieder mit neuen Daten geladen werden. Das passiert nicht. Wie man es repariert??

Tabelle wird wie folgt initialisiert:

function createDataTable() 
{ 
    try 
    { 
     oTable = $('#FTable').dataTable({ 
      "bDestroy":true, 
      "bJQueryUI": true, 
      "sScrollX": "100%", 
      "sScrollXInner": tablewidth+"px", 
      "bScrollCollapse": true, 
      "bSort":false, 
      "iDisplayLength" : 50, 
      "sPaginationType" : "full_numbers", 
      "aLengthMenu": [[10, 18, 50, -1], [10, 18, 50, "All"]] 
     }); 

     new FixedColumns(oTable, { 
      "iLeftColumns": 1, 
      "iRightColumns": 1 
     }); 
    } 
    catch (e) 
    { 
    alert(e.message); 
    } 
} 

Antwort

2

Sie die Datentabelle durch Clearing neu initialisiert und dann das Element Hinzufügen fnAddData() verwenden.

Zuerst prüfen, ob dataTable existiert oder nicht. Die Funktion fnClearTable() löscht die Daten aus der Tabelle.

In dem Code ist dataTable Datentabelle Variable und results ist die id der Tabelle.

if(typeof dataTable === 'undefined'){ 
    dataTable = $('#results').dataTable({ 
     "aLengthMenu": [ 
      [25, 50, 100, 200], 
      [25, 50, 100, 200] 
     ], 
     "iDisplayLength" : 25, 
     "sPaginationType": "full_numbers", 
    }); 
}else dataTable.fnClearTable(); 

Dann fügen Sie die Daten erneut mit FnAddData hinzu.

dataTable.fnAddData([key, assignee, summary, status, days]); 
+0

ich verwende nicht fnAddData.Each Mal, wenn ich dynamisch eine HTML-Tabelle erstellt dann ich es zu Datentabelle umwandeln (dh durch createDataTable Aufruf() -Funktion) – vmb

+0

Wie erstellen Sie die Tabelle dynamisch? Sie können nicht zwei Datentypen in derselben Tabelle haben. Sie können Tabelle dynamisch auch mit fnAddData erstellen und das ist die richtige Art und Weise AFAIK – dejavu

+1

zuerst werde ich HTML-Tabelle durch Hinzufügen von Td und tr dynamisch erstellen .... dann werde ich Initialisierungsfunktion aufrufen – vmb

0

können Sie verwenden fnReloadAjax

http://datatables.net/forums/discussion/256/fnreloadajax/p1

oTable = $('#FTable').dataTable({ 
    "bDestroy":true, 
    "bJQueryUI": true, 
    "sScrollX": "100%", 
    "sScrollXInner": tablewidth+"px", 
    "bScrollCollapse": true, 
    "bSort":false, 
    "iDisplayLength" : 50, 
    "sPaginationType" : "full_numbers", 
    "aLengthMenu": [[10, 18, 50, -1], [10, 18, 50, "All"]] 
}); 

function reinit(){ 
    oTable.fnReloadAjax('media/examples_support/json_source2.txt'); 
} 
Verwandte Themen