2014-12-17 19 views
6

.jquery-datatables çok sütunlu sıralama yönü

Örnek: http://jsfiddle.net/b2fLye17/17/

$('#example').DataTable({ 

    filter:false, 
    columnDefs: [ 
        { 
         targets: [1],//when sorting age column 
         orderData: [1,2] //sort by age then by salary 
        } 
       ] 
}); 

hangi yaş sütunu, maaş Artan sonra yaş Artan tablo tür tıkladığınızda.

seçeneklerim maaş azalan tarafından daha sonra yaş artan bunu sıralama yapmak ne olurdu?

Teşekkürler!

-------------------------- Düzenleme 1 ------------------ ---

Açıklama: yaş sütun artan sıralanır zaman maaş azalan tarafından daha sonra yaş artan göre sıralamak gerekir. Yaş sütunu azalan olarak sıralandığında, o zaman azalan yaşlara göre sırayla

-------------------------- Düzenle 2 - --------------------

istenen sonucu enter image description here

cevap

1
bir resmi

İşte burada. Biraz saldırıya uğradı, ama aynı son hedefi anlamaya çalışan HOURS'ları harcıyordum - iki sütuntan ayrılıyor. http://jsfiddle.net/b2fLye17/23/

<td data-age="40">$320</td> 
//In custom sort: 
var value = parseInt($(td).attr('data-age') + pad(td.innerHTML.substring(1), 10, '0')); 

Konsept: Bu foreach döngüsü kolonun dışında diğer hücreleri erişmek için bir yolunu değil, bu yüzden biz kapalı sıralamak istediğiniz hücreye "veriye" özelliğini ekledi arasında. Bu veri özniteliği, önemsediğimiz diğer sıralama sütunuyla aynı değere sahiptir. Bu nedenle, döngüdeki diğer "bitişik" hücrelere nasıl erişileceğini anlayana kadar bazı yinelenen veriler vardır.

İki değeri (gizli öznitelik ve görünür değer) birleştirdim ve sonra dizinlenecek bir int'ye dönüştürdüm. Değerler farklı uzunluklarda olduğundan, ikinci sütunu sıfırlarla (4086 vs 40086) doldurdum.

+0

Örneğimle, sorunumu bazı ayarlamalar ile çözdüm. Çok teşekkür ederim²! – sebmoi

2

Kullanım

$(document).ready(function() { 

    $('#example').DataTable({ 

     filter:false, 
     columnDefs: [ 
         { 
          orderData: [[1, 'asc'], [2, 'desc']]//sort by age then by salary 
         } 
        ] 
    }); 
}); 

JS Fiddle http://jsfiddle.net/b2fLye17/13/

+0

yararlıdır

var oTable=$('#example').dataTable({ filter:false }); oTable.fnSort([[1,"asc"], [2,"desc"]]); 

umut aşağıda çözüldü aynı sorunla karşı karşıya. http://jsfiddle.net/b2fLye17/9/ Zaman ayırdığınız için teşekkürler! – sebmoi

+0

Hedefleri kaldırmanız gerekiyor - güncelleştirilmiş yanıt –

+0

Hedefleri kaldırma, maaşı sıralamayacak. Örnekte, işe yaramış gibi görünüyordu çünkü 40 yaşlarındaki insanların maaşları zaten html'de sıralanmıştır. Test etmek için 86 $ ve 170 $ değiştirdim. Örnek: http://jsfiddle.net/b2fLye17/14/ – sebmoi

1

Satırdaki tüm verileri almak ve bunu j0xue özümüyle birleştirmek için var row = settings.aoData._aData[i]; yapabilir ve böylece html'de bir özellik eklemeden başka bir sütuna göre sıralayabilirsiniz. Bu soruyu sorduğunuz için

1

sayesinde ben de o zaman bu örnekte görüldüğü gibi bu İşe yaramıyor