2012-06-07 11 views
5

का उपयोग करके एकाधिक ढहने वाली पंक्तियां जोड़ते हैं, मैं अपने एप्लिकेशन के लिए उन्नत टेबल बनाने के लिए jQuery डेटाटेबल प्लगइन का उपयोग कर रहा हूं। आवश्यकताओं में से एक है "ढहने योग्य" पंक्तियां (समूह नहीं!): उदा। पंक्तियां अभियान का प्रतिनिधित्व करती हैं, और उनके बच्चे के अभियान हो सकते हैं। बाल पंक्तियों की संरचना (मूलभूत मामले में) मूल तालिका में समान होती है - समान कोशिकाएं, समान डेटा प्रकार।jQuery डेटाटेबल fnOpen() API फ़ंक्शन

लेकिन, बाल पंक्तियों को मूल तालिका को स्वयं प्रभावित नहीं करना चाहिए: मेरा मतलब है कि प्रति पृष्ठ पंक्तियों की संख्या समान रहनी चाहिए, बच्चे पंक्तियों को मूल पंक्ति से अलग से क्रमबद्ध नहीं किया जाना चाहिए, उन्हें हमेशा बाध्य रहना चाहिए । इसलिए मैं fnAddData() उस के लिए एपीआई func का उपयोग नहीं कर सकता।

और दूसरी मुश्किल आवश्यकता बहु स्तरीय सिमटने पंक्तियों (बच्चे अभियानों के लिए उदाहरण के लिए बच्चे को अभियान, आदि)

मैं fnOpen() उस के लिए एपीआई फ़ंक्शन का उपयोग किया गया था, यह अनुमति देता है संभावना है किसी भी पंक्ति को "खोलने" के लिए, इसमें एक बाल ब्लॉक जोड़ता है, और आप जो कुछ भी चाहते हैं उसे आम तौर पर सम्मिलित कर सकते हैं। यह DataTables 1.8.2 में ठीक काम कर रहा था, मैं बच्चे को पंक्तियों उत्पन्न करने के लिए इस तरह कोड का इस्तेमाल किया:

$(childRowData).each(function(){ 
    row = $(oTable.fnOpen(row.get(0), $(this), "child_row")); 
    $(row).addClass('child_row'); 
}); 

आम तौर पर, यह "खोला" वर्तमान पंक्ति (ऊपर परिभाषित), बच्चे पंक्ति में डाला डेटा, तो चक्र में "खोला गया" चक्र में,

लेकिन डेटाटेबल 1.9.0 के रूप में ऐसा लगता है कि इसे केवल मूल पंक्तियों को "खोलने" की अनुमति है, और केवल इसे एक बार करें।

बेशक

, मैं एक उप-तालिका बना सकते हैं, यह करने के लिए $ .dataTable() लागू करते हैं और बच्चे पंक्ति को सम्मिलित है, लेकिन यह कुछ हद तक एक लंगड़ा और महंगी समाधान की तरह लगता है, खासकर जब हम 3 हो सकता है गहराई के 4 स्तर।

क्या डेटाटेबल में ढहने वाली पंक्तियों को लागू करने का कोई अन्य तरीका है?

+0

तो ऐसा लगता है कि डेटाटेबल कोड को संशोधित किए बिना ऐसा करने का कोई तरीका नहीं है। हम ऐसा नहीं करना चाहते हैं, इसलिए मुझे नेस्टेड टेबल के साथ जाना पड़ा। –

उत्तर

0

जब आप बच्चे की पंक्ति बनाते हैं जिसमें उपचुनाव है, तो आप अपने स्वयं के समाधान को रोल करने से सबसे अच्छे तरीके से बंद हो जाते हैं .. मैं कुछ हफ्ते पहले इस तरह के कुछ सामानों के साथ ऐसा कर रहा था और यह सबसे अच्छा था जिसके साथ मैं आ सकता था ।

6

DataTables किसी भी तरह अद्यतन किया गया है और यह बहुत सीधे आगे माता पिता पंक्तियों को बच्चों पंक्तियों को जोड़ने के लिए अब है: http://datatables.net/reference/api/row().child()

बात वास्तव में स्पष्ट नहीं में से एक, मामले में आप अपने बच्चों को पंक्तियों के लिए एक ही लेआउट का उपयोग करना चाहते हैं अभिभावक पंक्तियों की तरह, आपको एक स्ट्रिंग के बजाय नोड को पास करने के लिए jquery selector का उपयोग करने की आवश्यकता है (प्रलेखन में लिखा गया है लेकिन मुझे पहली बार याद आया)।

Doint यह सही है:

.child(
    $(
     '<tr>'+ 
      '<td>'+rowIdx+'.1</td>'+ 
      '<td>'+rowIdx+'.2</td>'+ 
      '<td>'+rowIdx+'.3</td>'+ 
      '<td>'+rowIdx+'.4</td>' 
     '</tr>' 
    ) 
) 

लेकिन कर रही है कि गलत है: (यह अपने टेबल के आकार की एक कॉल्सपन के साथ एक "td" में अपने "tr" से जोड़ दिया जाएगा और यह स्पष्ट रूप से टूट जाएगा कॉलम संरेखण)

.child(
    '<tr>'+ 
     '<td>'+rowIdx+'.1</td>'+ 
     '<td>'+rowIdx+'.2</td>'+ 
     '<td>'+rowIdx+'.3</td>'+ 
     '<td>'+rowIdx+'.4</td>' 
    '</tr>' 
) 
+0

आपने आज एक जीवन बचाया। आपका बहुत बहुत धन्यवाद –