2013-04-05 28 views
9

Jak ponownie zainicjować datownik pakietu jQuery? Próbowałem nawet usunąć element tabeli. Wciąż ta tabela jest wyświetlana. Mój kod jest następujący:Jak ponownie zainicjować jquery Datatable

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; 

} 

Jak mogę to zrobić? Po wczytaniu przycisku Wyszukiwanie kliknij tabelę. Ponownie, gdy szukam z innym parametrem wyszukiwania, tabela powinna zostać załadowana nowymi danymi. Tak się nie dzieje. Jak to naprawić??

Tabela inicjowana jest w następujący sposób:

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); 
    } 
} 

Odpowiedz

2

można ponownie zainicjować Właściwość ta czyszcząc je, a następnie dodanie elementu pomocą fnAddData().

Najpierw sprawdź, czy istnieje dataTable, czy nie. Funkcja fnClearTable() usunie dane z tabeli.

W kodzie dataTable jest zmienną danych i results jest id tabeli.

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

Następnie ponownie dodaj dane za pomocą fnAddData.

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

Nie używam czasu fnAddData.Each i tworzenia tabeli html dynamicznie następnie przekonwertować go do DataTable (tj wywołując createDataTable function()) – vmb

+0

W jaki sposób tworzycie tabelę dynamicznie? Nie możesz mieć dwóch wystąpień datatable na tej samej tabeli. Możesz utworzyć tabelę dynamicznie za pomocą fnAddData i to jest poprawna metoda AFAIK – dejavu

+1

Najpierw utworzę tabelę html dodając dynamicznie td i tr .... wtedy wywołaję funkcję inicjalizacji – vmb

0

Możesz użyć 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'); 
} 
Powiązane problemy