2014-12-24 30 views
11

filtre() fonksiyonu beklendiği gibi çalışmıyor ve bir sayısal değer deniyorum büyüktür 60.JavaScript DataTable - Ben javscript kütüphane DataTable kullanıyorum

olup olmadığını satır tabanlı filtre çalışıyorum Bu örneği izlemeye:

table 
    .column(3) 
    .data() 
    .filter(function (value, index) { 
     return value > 60 ? true : false; 
    }) 

sorun tüm satırları hala görebilir ve hiçbir filtreleme hiç yapılmıştır: http://datatables.net/reference/api/filter%28%29

filtre kodu şöyle. Benim işlevim basitçe yanlış döndürse bile, tüm satırlar hala görülebilir. Burada neler oluyor?

JSFiddle örnek

http://jsfiddle.net/1hLcpr3x/

cevap

12

sütun değil satırları kendileri veri dönen dizi filtrelediğini bağlantı verdiğiniz örnek.

Sen içeriği dönen ve ona

var filteredArray = table.column(3) 
         .data() 
         .filter(function(value, index) { 
          return value > 60 ? true : false; 
         }) 
         .draw(); 

console.log(filteredArray); 
Bu filter yöntem size data() ile iade verileri değil, satırlar filtreler, yaptığı iştir

FIDDLE

giriş yaparak bunu doğrulayabilirsiniz.

Eğer DataTable eklentisine daha spesifik $.fn.dataTableExt.afnFiltering kanca ediyorum, yerinde satırlara filtre ve bu

$.fn.dataTableExt.afnFiltering.push(
    function (oSettings, aData, iDataIndex) { 
     return aData[3] < 60; 
    } 
); 

FIDDLE

Documentation for DataTables filtering

+0

teşekkür ederiz gibi bir şey yapmak için !!! Bu harika çalışıyor. – user985723

+0

Bir sayfada birden fazla veri kümesine sahibim, özel kancalı filtremizin yalnızca istediğimle çalıştığından nasıl emin olabilirim? Tabloyu, geçirilen ayarlar nesnesinden alabilir miyim? – Numeron

+0

@ CanÜrek - Ne demek çalışmıyor? 60 ya da daha fazla yaştaki herkesi filtreler ve son kemanda 59 yaşından büyük insanlar olmaz, bu yüzden iyi çalışıyor mu? – adeneo