2012-08-02 19 views
6

मैं jquery डेटाटेबल का उपयोग कर रहा हूं जिसमें कॉलम के लिए अनुकूलित प्रतिपादन शामिल है। मूल्यों के आधार पर, मुझे इसमें कुछ नियंत्रण अक्षम करना होगा। मैं पोस्ट के बाद अपने jquery डेटाटेबल को पुनः लोड/रीफ्रेश/रीबंड करना चाहता हूं। मैं उसे कैसे कर सकता हूँ?डेटा रीफ्रेश करें या पुनः लोड करें

**Controller:** 

    [HttpPost] 
    public JsonResult PostAction(MyMOdel model) 
    { 
     //save changes to DB 
     return Json(new 
     { 
      Success = result, 
     }); 
    } 

public ActionResult MyAction() 
    //grab records from DB and return JSON 
} 

**View:** 

@using (Ajax.BeginForm("PostAction", "ControllerName", null, 
     new AjaxOptions 
     { 
      UpdateTargetId = "update-message", 
      InsertionMode = InsertionMode.Replace, 
      HttpMethod = "POST", 
      OnSuccess = "updateSuccess" 
     }, new { @id = "myForm" 

} 
     )) 
{ 
<table id="myTbl" class="display"><tr><td>col1</td></tr></table> 
} 

<script type="text/javascript"> 
     var oTable = $('#myTbl').dataTable({ 
        "sAjaxSource": "/ControllerName/MyAction", 
         <!-- more config --> 

    function updateSuccess(data, status, xhr) { 
     //refresh datatable; 

    } 
</script> 

अद्यतन: * *

मैं इस सवाल का जवाब मिला:

  • स्पष्ट तालिका (fnClearTable)

  • तालिका करने के लिए नए डेटा जोड़ने (fnAddData)

  • तालिका (fnDraw)

+0

कृपया अपना कोड यहां शामिल करें ताकि हम देख सकें कि क्या हो रहा है। क्या हो रहा है यह देखने के लिए आवश्यक न्यूनतम कोड पर इसे कम करने का प्रयास करें। – KRyan

उत्तर

1

जवाब Ifound:

clear the table (fnClearTable) 

add new data to the table (fnAddData) 

redraw the table (fnDraw) 
0

तुम बस मेज पर .dataTable() फिर से फोन पुनः बनाने, किसी भी तर्क के बिना।

तो अगर आप कुछ इस तरह किया था:

$('#someTable').dataTable({ 
    someAttribue: someValue 
}); 

फिर आप बाद में यह कर सकते हैं यह ताज़ा करने के लिए:

$('#someTable').dataTable(); 

तर्क के साथ फिर से इसे कहते मत करो; यह पसंद नहीं है।

+0

यह काम नहीं किया। sAjaxSource – user1480864

+0

@ user1480864 के माध्यम से jquery datatable लोड हो रहा है: फिर प्रश्न पर मेरी टिप्पणी देखें; हमें और जानकारी चाहिए। – KRyan

+0

यह मामला नहीं है ... यह पहली कॉल से कलाकृतियों के पीछे छोड़ देता है ... –

17

पहले सिर्फ datatable संदर्भ मिलता है,

var oTable = $("#someTable").dataTable(); 

इस्तेमाल करने के बाद कि जो कुछ भी, आप चाहते हैं करने के लिए:

Clear the table : oTable.fnClearTable(); 

Redraw the table : oTable.fnDraw(); 

Add new data to the table : oTable.fnAddData(); 
+1

बस यह स्पष्ट करने के लिए कि var oTable = $ ("# someTable") है। डेटाटेबल(); (समारोह के लिए ऊंट मामले नोट)। –

+0

धन्यवाद मैट। इसे "डेटाटेबल" में बदल दिया गया। – Prateek

+0

फ़ंक्शन नाम अब api v.1.10 –

-1

आप यकीन है कि यह है कर रहे हैं जो आप खोज रहे हैं वह नहीं:

oTable.fnReloadAjax(); 

यह मेरे लिए काम करता है। यह वर्तमान AJAX url कॉन्फ़िगरेशन का उपयोग कर ग्रिड को पुनः लोड करता है।

+1

pt रनटाइम त्रुटि: ऑब्जेक्ट संपत्ति या विधि 'fnReloadAjax' का समर्थन नहीं करता है –

2

यह मेरे लिए काम किया:

window.table = $('#TableID').dataTable({ 
        ... 
       }); 
0
var oTable = $('#groups').dataTable(); 
oTable.fnClearTable(); 
oTable.fnDestroy(); 
groupsList(); 
0

नए DataTable संस्करण इस काम करेगा के लिए:

// Initially 
window.table = $('#TableID').dataTable({ 
        ... 
       }); 

// Later, when table needs to be refreshed 
window.table.fnDestroy(); 
// depending on the version, maybe just .destroy() instead of .fnDestroy(); 

अब बस कॉल आप शुरू किया था तालिका reinit करने के लिए क्या :

var table = $('#yourDataTable').DataTable({...}); 
table.columns.adjust().draw(); 

मेरे मामले में मुझे बस इसे फिर से निकालना होगा। लेकिन आप फिर से शुरू करने से पहले नया डेटा साफ़ और जोड़ सकते हैं।

संबंधित मुद्दे