2012-03-02 15 views
21

मैं पृष्ठ परिवर्तन के लिए फ़ंक्शन 'fnDrawCallback' का उपयोग कर रहा हूं। यह मूल रूप से मेरे उद्देश्य को हल करता है। एकमात्र चीज यह है कि जब मैं डेटाटेबल ऑब्जेक्ट को प्रारंभ कर रहा हूं तो मुझे उस फ़ंक्शन को निर्दिष्ट करना होगा। क्या शुरुआतीकरण के बाद मैं इसे कर सकता हूं?डेटाटेबल्स पेज चेंज कॉलबैक

उदाहरण के लिए: मैं इस तरह कर रहा हूँ:

$("#tableID").dataTables({'fnDrawCallBack':functionName}); 

मैं इस तरह करना चाहते हैं:

var oTable = $("#tableID").dataTables(); 
oTable.fnDrawCallback = functionName; // or something like this 

समाधान:

oTable.aoDrawCallback.push(functionObj); 
var functionObj = { 
    fn: funtionName 
}; 
+0

मैं जानना चाहता हूं कि डेटा को प्रारंभ करने के बाद मैं उस कार्य को निर्दिष्ट कर सकता हूं। – emphaticsunshine

+0

क्या मैं प्रारंभ करने के बाद AJAX पेज लोड ईवेंट निर्दिष्ट कर सकता हूं ?? – emphaticsunshine

+0

http://stackoverflow.com/questions/7407111/detect-page-change-on-datatable – trante

उत्तर

19

आप ड्रॉ कॉलबैक सरणी (aoDrawCallback, fnDrawCallback आंतरिक रूप से नहीं - इसकी एक सरणी है क्योंकि कई कॉलबैक हो सकते हैं) में हेरफेर करने के लिए डेटाटेबल्स की आंतरिक डेटा सेटिंग्स तक पहुंच सकते हैं, या (और मैं क्या सुझाव दूंगा) आप 'ड्रा' जोड़ सकते हैं 'घटना श्रोता:

var oTable = $("#tableID").dataTables(); 
$(oTable).bind('draw', functionName); 

घटनाओं DataTables द्वारा चलाई यहाँ प्रलेखित रहे हैं: http://datatables.net/docs/DataTables/1.9.0/#summary_events

+0

बाइंडिंग ईवेंट डेटाटेबल्स के संस्करण में काम नहीं कर रहा है जिसका मैं उपयोग कर रहा हूं। लेकिन एक अच्छे सुझाव के लिए धन्यवाद। – emphaticsunshine

+0

aoDrawCallback मेरे लिए काम किया। मुझे उस सरणी में ऑब्जेक्ट को धक्का देना है और आपका फ़ंक्शन उस फ़ंक्शन की एक एफएन प्रॉपर्टी होना चाहिए। – emphaticsunshine

+0

बाइंडिंग ईवेंट $ (oTable) .bind() नए संस्करण 1.9.2+ के साथ काम करता प्रतीत होता है। – jjwdesign

1
+0

यह लोगों के लिए काम करता प्रतीत होता है लेकिन उन्होंने बाद के संस्करणों में "bRetrieve" जोड़ा। मेरे पास 1.6.2 संस्करण है और इसमें उसमें bRetrieve नहीं है। – emphaticsunshine

5

यदि आप एक संस्करण 1.8 की तुलना में अधिक है, तो आप इस पेज का उपयोग कर सकते परिवर्तन की घटनाओं को हिट करने के:

$('#myTable').on('page', function() {...}); 

उम्मीद है कि यह मदद करता है!

+1

धन्यवाद यह आपके लिए +1 काम कर रहा है। –

+0

@ निखिल अग्रवाल धन्यवाद! खुशी हुई यह मदद की! – streetlight

+0

मेरे मामले में, मैंने "page.dt" का उपयोग किया लेकिन यह किसी कारण से केवल मेरे तीसरे पृष्ठ पर काम करता है। –

1

के बजाय दो अलग-अलग कॉल, बस इस तरह के निम्नलिखित एक setMouseDown समारोह चलाता है कि जब भी एक पेज बदलाव (पहले पृष्ठ प्रतिपादन सहित) होता है के रूप में एक .bind() .dataTable(), से पहले जोड़ें:

$('#myTable') 
    .bind('page', setMouseDown()) 
    .dataTable( 
    { 
     bJQueryUI: true, 
     ... Other Init Stuff Here ... 
    }); 
संबंधित मुद्दे