2012-07-07 11 views
5

मैं अपने कॉलम सॉर्ट करने के लिए डेटाटेबल्स बनाने की कोशिश कर रहा हूं। पहला कॉलम ठीक काम करता है क्योंकि यह एक साधारण संख्या है। हालांकि अगला कॉलम एक इनपुट फ़ील्ड है। जब मैं उस तरह की कोशिश करने की कोशिश करता हूं तो कुछ भी नहीं होता है।डेटाटेबल एक इनपुट फ़ील्ड के साथ कॉलम सॉर्ट कर सकते हैं?

<table width="100%" cellspacing="0" class="table sortable no-margin"> 
<thead> 
<tr> 
    <th scope="col" class="sorting" style="width: 57px;"> 
     <span class="column-sort"> 
     <a href="#" title="Sort up" class="sort-up"></a> 
     <a href="#" title="Sort down" class="sort-down"></a> 
     </span> 
     ID 
    </th> 
    <th scope="col" class="sorting_desc" style="width: 94px;"> 
     <span class="column-sort"> 
     <a href="#" title="Sort up" class="sort-up"></a> 
     <a href="#" title="Sort down" class="sort-down"></a> 
     </span> 
     Order 
    </th> 
</tr> 
</thead> 
<tbody> 
<tr id="row_20" class="odd"> 
    <td id="refKey_20" style="text-align:center;" class=""> 
     1Y 
    </td> 
    <td class=" sorting_1"> 
     <input type="text" value="160" size="3" name="item.Order" 
     maxlength="3" id="Order_20" > 
    </td> 

</tr> 
<tr id="row_19" class="even"> 
    <td id="refKey_19" style="text-align:center;" class=""> 
     1X 
    </td> 
    <td class=" sorting_1"> 
     <input type="text" value="150" size="3" name="item.Order" 
     maxlength="3" id="Order_19" > 
    </td> 

</tr> 
</tbody> 
</table> 

क्या कोई तरीका है कि मैं इनपुट फ़ील्ड को सॉर्ट करने के लिए डेटाटेबल्स प्राप्त कर सकता हूं?

उत्तर

5

आप इस उदाहरण बताते हैं कि कैसे करने के लिए do sorting on input fields. मूल रूप से आप एक छँटाई समारोह

और फिर अपनी तालिका में बता उपयोग करने के लिए की घोषणा पर गौर करना चाहिए कि

$('#example').dataTable({ 
    "aoColumns": [ 
     null, 
     { "sSortDataType": "dom-text" } 
    ] 
}); 

या बुद्धि aoColumnDefs

$('#example').dataTable({ 
    "aoColumnDefs": [{ "sSortDataType": "dom-text" , aTarget: "yourclass"}] 
}); 
+0

लेकिन मैं एक समस्या है। मैं अलग-अलग तालिकाओं के लिए एक ही ताज़ा कोड का उपयोग करता हूं। आपका कोड aoColumns हार्डकोड करता है। क्या इन्हें टीडी कॉलम पर कक्षाओं के रूप में सेट करना संभव है? या वैकल्पिक रूप से मैं "aoColumns" का एक अलग सेट बना सकता हूं और प्रत्येक तालिका के लिए अलग-अलग उपयोग कर सकता हूं? – Alan2

+0

@Gemma मुझे आमतौर पर प्रत्येक तालिका के लिए मैन्युअल रूप से aoColumns सेट अप करना पड़ता था, मुझे लगता है कि आपके पास AoColumns के अलग-अलग सेट होना चाहिए और अन्य विकल्पों को ठीक करते हुए उन्हें आवश्यकतानुसार उपयोग करना चाहिए –

+0

क्या आपने aoColumnDefs को आजमाया था। मैं बस इसके बारे में जानने की कोशिश कर रहा हूं। मुझे लगता है कि एक वें वर्ग के आधार पर सेट कर सकते हैं। – Alan2

-1

इनपुट से पहले मूल्य के साथ एक अदृश्य div सेट करें खेत।

<tbody> 
<tr id="row_20" class="odd"> 
    <td id="refKey_20" style="text-align:center;" class=""> 
     1Y 
    </td> 
    <td class=" sorting_1"> 
     <div style="display:none;">160</div> 
     <input type="text" value="160" size="3" name="item.Order" 
     maxlength="3" id="Order_20" > 
    </td> 

</tr> 
<tr id="row_19" class="even"> 
    <td id="refKey_19" style="text-align:center;" class=""> 
     1X 
    </td> 
    <td class=" sorting_1"> 
     <div style="display:none;">150</div> 
     <input type="text" value="150" size="3" name="item.Order" 
     maxlength="3" id="Order_19" > 
    </td> 
</tr> 
</tbody> 
+0

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

8

DataTables 1.10+ कुछ विकल्प चर के नाम के संस्करणों के लिए बदल दिया गया है और एक नया एपीआई की शुरुआत की। यहां दस्तावेज़ीकरण: http://datatables.net/examples/plug-ins/dom_sort.html

$(document).ready(function() { 
    var table = $('#example').DataTable({ 
     "columnDefs": [ 
      { 
       "orderDataType": "dom-input", 
       "targets": 0, // Just the first column 
      }, 
     ], 
    }); 
}); 

कस्टम प्रकार समारोह:

यहाँ 1.10+ में ऊपर स्वीकार किए जाते हैं जवाब की एक काम संस्करण है

$.fn.dataTable.ext.order['dom-input'] = function (settings, col) { 
    return this.api().column(col, { order: 'index' }).nodes().map(function (td, i) { 
     return $('input', td).val(); 
    }); 
} 
+0

यह काम करता है लेकिन तारों पर नहीं, केवल संख्यात्मक फ़ील्ड –

+0

आपको कॉलमडिफ एरे ऑब्जेक्ट में टाइपिंग 'स्ट्रिंग' को अल्फान्यूमेरिक फ़ील्ड पर काम करने के लिए जोड़ना होगा –

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

  • कोई संबंधित समस्या नहीं^_^