2015-07-08 14 views
5

Zaadaptowałem następującą stronę internetową do moich potrzeb i dodałem trochę kodu, więc ma teraz menu rozwijane select2 zamiast regularnych menu wyboru (które bardziej lubię). Jednak nie byłem w stanie wymyślić, jak dostosować kod, więc mogę go używać tylko w określonych kolumnach zamiast w każdej kolumnie. Wszelkie wskazówki będą mile widziane.Wyszukiwanie w tabelach danych na konkretnych kolumnach

http://datatables.net/examples/api/multi_filter_select.html (kod I dostosowany)

initComplete: function() { 
     this.api().columns().every(function() { 
      var column = this; 
      var select = $("<select class='searchs2'><option value=''></option></select>") 
       .appendTo($(column.header()).append()) 
       .on('change', function() { 
        var val = $.fn.dataTable.util.escapeRegex(
         $(this).val() 
        ); 
        column 
         .search(val ? '^'+val+'$' : '', true, false) 
         .draw(); 
       }); 
      column.data().unique().sort().each(function (d, j) 
      { select.append('<option value="'+d+'">'+d+'</option>')}); 
     }); 
     $(".searchs2").select2(); 
    } 

także - jeśli istnieje możliwość, aby ukryć generycznym pola wyszukiwania chciałbym ukryć go na górze, jak również i po prostu dostarczyć te pola select2. Dziękuję Ci.

(edytowany zaktualizować poprawkę tak select2 by zainicjować dla każdej listy rozwijanej, ostatni nie został inicjowanie)

Odpowiedz

5

Można użyć columns([array]). Zamiast

this.api().columns().every(function() { 

i chcesz przeprowadzić wyszukiwanie na kolumnie 1,2,5 i 6 tylko.

this.api().columns([1,2,5,6]).every(function() { 
+0

I zmodyfikowanej 'this.api() kolumny() każdy (funkcję.() {'to' this.api(). columns ([1,2,5,6], function() {' (i kilka innych odmian) i nie mogę uzyskać składni do zainicjowania, to zdecydowanie wydaje się być rozwiązaniem Będę musiała majstrować przy odrobinie, żeby to zadziałało –

+2

@JeffBSoloWookie, myślę, że David miał na myśli to, że zamiast tego 'this.api(). Columns(). Every (function() { 'użyj tej kolumny this.api(). ([1,2,5,6]). every (function() {.. –

+1

ok - twoja edycja była "trochę zbyt prosta" ... nie mogę uwierzyć, że tego nie widziałem :((Nie sądzę, żebym mógł użyć tablicy z "każdym" jeszcze w miejscu) –

Powiązane problemy