2012-03-08 18 views
14

यहाँ मेरी कोड है:ड्रापडाउन फिल्टर jQuery datatables

$(document).ready(function() { 
    /* Initialise the DataTable */ 
    var oTable = $('#example').dataTable({ 
     "oLanguage": { 
      "sSearch": "Search all columns:" 
     }, 
     "iDisplayLength": 10, 
     "bJQueryUI": true, 
     "sPaginationType": "full_numbers", 
     "bFilter": true, 
    }); 

    /* Add a select menu for each TH element in the table footer */ 
    $("thead th").each(function (i) { 
     this.innerHTML = fnCreateSelect(oTable.fnGetColumnData(i)); 
     $('select', this).change(function() { 
      oTable.fnFilter($(this).val(), i); 
     }); 
    });   
}); 

इम jQuery datatables प्लगइन का उपयोग कर, अपने पूरी तरह से काम कर रहा सिर्फ इस उदाहरण की तरह:

http://www.datatables.net/release-datatables/examples/api/multi_filter_select.html

मैं करना चाहते हैं क्या है प्रत्येक कॉलम के लिए ड्रॉपडाउन होने के बजाय मैं केवल एक विशिष्ट कॉलम पर ड्रॉपडाउन करना चाहता हूं।

$("thead th").each(function (i) { 

लेकिन यकीन है कि क्या डाल करने के लिए नहीं im:

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

+1

मैं का उपयोग कर लगता है कि 'i' आप जो कॉलम आप को दिखाने के लिए में –

उत्तर

8

कर सकता है कि आप केवल जरूरत है एक स्तंभ पर तुम कर सकते हो

var indexOfMyCol = 2;//you want it on the third column 
$("thead th").each(function (i) { 
    if(i === indexOfMyCol){ 
     this.innerHTML = fnCreateSelect(oTable.fnGetColumnData(i)); 
     $('select', this).change(function() { 
     oTable.fnFilter($(this).val(), i); 
     }); 
    } 
}); 
+0

धन्यवाद, इतना आसान काम करेगा जब आप इसके बारे में सोचते:) क्या मैं ड्रॉपडाउन को एक शीर्षक दे सकता हूं? जैसे .... कृपया – Codded

+1

चुनें, 'fnCreateSelect' में कोडित' var = r = '<विकल्प मान =" "> कृपया' चुनें , ' –

+0

मैं आज चालू नहीं हुआ, वह एक काम कर सकता था :) मदद – Codded

1

मुझे लगता है कि चाल

$("thead th").each(function (i) { 
    if(i==1) 
    { 
     this.innerHTML = fnCreateSelect(oTable.fnGetColumnData(i)); 
     $('select', this).change(function() { 
      oTable.fnFilter($(this).val(), i); 
     }); 
    } 
}); 
+0

धन्यवाद, मैं अन्य जवाब का इस्तेमाल किया है चाहता हूँ नियंत्रित कर सकते हैं लेकिन यह aswel :) – Codded

2

आप columnfilter प्लगइन का उपयोग कर सकते हैं ...

$(document).ready(function(){ 
    $('#example').dataTable() 
      .columnFilter({ 
      aoColumns: [ { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] }, 
        { type: "text" }, 
        null, 
        { type: "number" }, 
      { type: "select" } 
       ] 

     }); 
}); 
18

आप अपना स्वयं का चयन सूची और स्थिति यह कहीं भी आप तालिका के बाहर की तरह बना सकते हैं।

<select id="mySelect"> 
    <option value=""></option> 
    <option value="1">1</option> 
    ... 
</select> 

<script> 
    $('#mySelect').on('change',function(){ 
     var selectedValue = $(this).val(); 
     oTable.fnFilter("^"+selectedValue+"$", 0, true); //Exact value, column, reg 
    }); 
<script> 
+2

मेरी राय में यह सबसे अच्छा उत्तर और उपयोग – We0

+0

है, यह मानता है कि आप पहले से ही उस कॉलम के मानों को जानते हैं, कभी-कभी यह – zizoujab

+0

नहीं है, लेकिन यदि bStateSave सत्य पर सेट है, तो आप ताज़ा करने के बाद चयनित मूल्य नहीं प्राप्त करें –

1

हो सकता है कि समय बदल गया है, लेकिन कोई प्लगइन और dataTables1.10.12 उपयोग करने के साथ और यह @api है, के रूप में टिप्पणी में एक व्यक्ति का सुझाव दिया, आप इसी टेबल के लिए एक सरणी से शून्य आधारित सूचकांक पूर्णांक उपयोग कर सकते हैं। उदाहरण कोड, महत्वपूर्ण बिट्स नीचे 2 लाइन पर हैं। मैं सिर्फ चौथे कॉलम पर खोज रहा हूं, और यह कॉफ़ीस्क्रिप्ट है लेकिन आपको यह विचार मिलता है।

$('#example').DataTable initComplete: -> 
        @api().columns([3]).every -> 
          column = this 
          select = $('<select><option value="">Sort Column(All)</option></select>').appendTo($(column.header()).empty()).on('change', -> 
            val = $.fn.dataTable.util.escapeRegex($(this).val()) 
            column.search(val ? '^'+val+'$' : '', true, false).draw() 
            return 
          ) 
          column.data().unique().sort().each (d, j) -> 
            select.append '<option value="' + d + '">' + d + '</option>' 
            return 
          return 
        return 
संबंधित मुद्दे