2010-02-18 10 views
8

ajax ile güncellenmiş bir tablo var ve eğer sıralanırsa güncellendikten sonra ancak sabit bir sütun değil, en son tıklatılan aynı sütunu güncellemem gerekiyor. Benim kodJquery Tabloları, güncelleştirildikten sonra aynı sütunu sırala

function tableUpdated() { 
$(".tablesorter").trigger("update"); 
//alert($(".tablesorter").sorting); 
var sorting = [[7, 0]]; 
$("table").trigger("sorton", [sorting]); 
} 

Burada size yardımcı olacaktır 7

cevap

5

jQuery en .data() yerine Seçili sütun indeksi koymak gerekir üstünde. Kullanıcı bir tabloyu sıralamak için tıkladığında, sütunları tablonun kendisinde saklayın. sıralama işlevi dahilinde, bu ekleyin:

$("#table").data('sorting', selectedColumn); 

Şimdi id="table" ile eleman selectedColumn değeri ile bir özellik sorting sahiptir. Veri veri nesneleri eklemek için izin daha karmaşık olabilir .data() kullanılarak eklenen

function tableUpdated() { 
    $(".tablesorter").trigger("update"); 
    var sorting = [[$("#table").data('sorting'), 0]]; 
    $("#table").trigger("sorton", [sorting]); 
} 

: tableUpdated olarak, bu verileri kullanabilir. Daha fazla ayrıntı için bkz. this page.

+0

Teşekkürler, bunu deneyeceğim ... –

+0

ilk: bunun için teşekkürler. İkincisi: veri aramasındaki 0 ​​değeri, varsayılan olarak, kullanıcının seçili değerini değil, artıyor (azalan) olduğunu varsaymıyor mu? – javamonkey79

+0

@ javamonkey79: 0 olanı varsayarsak, haklısın. Bu, .data() işlevini kullanmak için iyi bir yer olabilir. Sıralama yönünü tablodaki başka bir özellik olarak kaydedin ve sıralamanın yönü değiştiğinde güncelleştirin. – Aaron

0

Bir günlüğüne bununla savaştıktan sonra, kutudan durum tasarrufu yapan datatables plugin'u buldum. Umarım bunun bir başkasına yardımı olur. kodunuzu kullanarak

3

, böyle bir şey yapabilirsiniz (varsayalım tablo id # listesi tablo olan) tasnif akım tablosunu korumak için:

function tableUpdated() { 
    $("#list-table").trigger("update"); 
    var sorting = $("#list-table").get(0).config.sortList; 
    $("#list-table").trigger("sorton", [sorting]); 
} 
2

sen 'sortEnd' üzerinde o kadar alabilirsiniz Masanızda olay: İşte

var lastSortList; 

$table.on('sortEnd', function(e) { 
    lastSortList = e.target.config.sortList; 
}); 
0

aynı sütun ile sipariş ve

var sorting = $("table").get(0).config.sortList; 
sorting.push([2,0]); // add an element to the array 
$("table").trigger("sorton", [sorting]); 
sıralayıcı bir yenisini ekleyebilir
0

Böyle başlayan ajax yalnızca son sıralama kurtarmak için biraz daha az ek yük olabilir:

lastSortList=$("table")[0].config.sortList; 

Sonra böyle güncellemeden sonra geri almak:

$("table").trigger("sorton", [lastSortList]); 

ilk ilan etmeyi unutmayın Doğru kapsamda olsa da.

İlgili konular