2013-04-05 6 views
9

एक jQuery डेटाटेबल को पुन: प्रारंभ कैसे करें? मैंने टेबल तत्व को हटाने की भी कोशिश की। फिर भी वह तालिका प्रदर्शित हो रही है। मेरा कोड इस तरह है:jquery डेटाटाइबल को पुन: प्रारंभ करने के लिए कैसे करें

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; 

} 

मैं यह कैसे कर सकता हूं? खोज बटन के बाद तालिका लोड हो जाती है। दोबारा, जब मैं एक और खोज पैरामीटर के साथ खोज करता हूं, तो तालिका को नए डेटा के साथ लोड करना चाहिए। ऐसा नहीं हो रहा है। इसे कैसे जोड़ेंगे??

टेबल इस तरह आरंभ नहीं हो जाता:

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

उत्तर

2

आप इसे साफ़ करने और उसके बाद तत्व fnAddData() का उपयोग कर जोड़कर datatable आरंभीकृत कर सकते हैं।

पहले जांचें कि dataTable मौजूद है या नहीं। फ़ंक्शन fnClearTable() तालिका से डेटा साफ़ कर देगा।

कोड में, dataTable डेटाटेबल चर है और results तालिका का id है।

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

फिर फिर fnAddData का उपयोग कर डेटा जोड़ें।

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

मैं fnAddData.Each समय मैं गतिशील रूप से एक HTML तालिका बनाने उपयोग नहीं कर रहा उपयोग कर सकते हैं तो मैं इसे datatable (यानी में बदलने का createDataTable बुला() फ़ंक्शन द्वारा) – vmb

+0

आप तालिका को गतिशील रूप से कैसे बना रहे हैं? आपके पास एक ही टेबल पर डेटाटेबल के दो उदाहरण नहीं हो सकते हैं। आप fnAddData का उपयोग करके गतिशील रूप से तालिका बना सकते हैं और यह सही तरीका है AFAIK – dejavu

+1

पहले मैं td और tr गतिशील रूप से जोड़कर HTML तालिका बनाउंगा .... फिर मैं प्रारंभिक फ़ंक्शन – vmb

0

आप 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'); 
} 
संबंधित मुद्दे