2010-02-18 24 views
8

Tôi có bảng được cập nhật bằng ajax và sau khi cập nhật nếu được sắp xếp nhưng tôi cần sắp xếp không phải cột cố định nhưng cùng cột được nhấp lần cuối trước khi cập nhật.Jquery Tablesorter sắp xếp cùng một cột sau khi cập nhật

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

Trong mã của tôi ở trên tôi cần phải đưa chỉ số cột được lựa chọn của tôi thay vì 7

Trả lời

5

jQuery .data() sẽ giúp bạn ở đây. Bất cứ khi nào người dùng nhấp để sắp xếp một bảng, hãy lưu trữ các cột trên chính bảng đó. Trong chức năng sắp xếp, thêm này:

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

Bây giờ các phần tử với id="table" có một tài sản sorting với giá trị của selectedColumn. Trong tableUpdated, bạn có thể sử dụng dữ liệu này:

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

dữ liệu bổ sung sử dụng .data() có thể còn phức tạp hơn, cho phép bạn thêm các đối tượng dữ liệu. Xem this page để biết thêm chi tiết.

+0

Cảm ơn, tôi sẽ thử ... –

+0

trước tiên: cảm ơn vì điều này. Thứ hai: không 0 trong tra cứu dữ liệu làm cho nó mặc định để tăng dần \ giảm dần (tôi quên nó là) và không phải là giá trị người dùng đã chọn? – javamonkey79

+0

@ javamonkey79: Giả sử đó là số 0, bạn nói đúng. Đây có thể là một nơi tốt để sử dụng .data(). Lưu hướng sắp xếp làm thuộc tính khác trên bảng và cập nhật nó khi hướng của sắp xếp được thay đổi. – Aaron

0

Sau khi chiến đấu với điều này trong một ngày hoặc lâu hơn, tôi tìm thấy datatables plugin có trạng thái tiết kiệm ra khỏi hộp. Tôi mong điều này giúp được người nào khác.

3

Sử dụng mã của bạn, bạn có thể làm một cái gì đó như thế này (giả sử id bảng của bạn là # danh sách bàn) để duy trì bảng hiện sắp xếp:

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

bạn có thể nhặt nó lên trên 'sortEnd' sự kiện trên bàn của bạn:

var lastSortList; 

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

ở đây bạn có thể đặt hàng với cùng một cột và thêm một cái mới để Sorter

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

Nó có một chút ít chi phí để lưu các loại cuối cùng chỉ khi bắt đầu ajax như thế này:

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

Sau đó, làm cho nó trở lại sau khi cập nhật như thế này:

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

Ghi tuyên bố đầu tiên dòng trong phạm vi bên phải mặc dù.

Các vấn đề liên quan