2013-07-28 33 views
5

Làm cách nào để thực hiện thao tác fnUpdate trên hàng hiện không được xem do phân trang?Cập nhật hàng bị ẩn do phân trang/phân loại

Tôi đang phát triển một ứng dụng web sử dụng hai phiên bản DataTable trong các vùng chứa div khác nhau. Khi một vùng chứa hiển thị, vùng chứa khác bị ẩn qua jQuery.fadeOut()/fadeIn()

Trong một div, tôi có bảng tóm tắt hiển thị lựa chọn trường dữ liệu có sẵn trong vùng chứa khác, ẩn. Các hàng giữa các bảng này được ánh xạ qua hậu tố _id# tới ID hàng, Ví dụ: id hàng 4_performance_3 trong bảng tóm tắt ánh xạ tới id hàng timeline_task_3 trong bảng chi tiết đầy đủ.

Nếu id hàng timeline_task_3 không hiển thị do phân trang và/hoặc phân loại, làm cách nào tôi có thể cập nhật hàng nếu tôi đã áp dụng thay đổi cho 4_performance_3?

Trong đoạn mã, element là null do id hàng là ngoài tầm nhìn qua pagination

var tableArray = timelineTable.fnGetNodes(); 
var elemSplit; 

for (var i = 0; i < tableArray.length; i++) { 
    elemSplit = tableArray[i].id.split("_"); 

    if (elemSplit[2] == currentTask.id){ 
     element = document.getElementById(tableArray[i].id); 

     timelineTable.fnUpdate(currentTask.internal, element, 0, false); 
     timelineTable.fnUpdate(currentTask.dueDate, element, 1, false); 
     timelineTable.fnUpdate(currentTask.label, element, 4, false); 
     timelineTable.fnUpdate(currentTask.complete, element, 6, false); 
     timelineTable.fnUpdate(currentTask.comments.length, element, 7, false); 

     timelineTable.fnSort([[1, "asc"]]); 

     console.log("updated timeline tasks"); 

    } 

} 

Trả lời

0

Vâng, bảng ẩn có thể không có các nút lựa chọn ... nhưng nó chắc chắn đã thật dữ liệu riêng !

Cách đơn giản nhất là để giữ một tham chiếu đến hai bảng:

var mySummary = $('#exampleSum').dataTable(); 
var myTimeline = $('#exampleLine').dataTable(); 

Bây giờ bạn luôn có thể lấy số liệu của mỗi bảng với myTimeline.fnGetData(). Có lẽ bạn cần phải thêm một cột dữ liệu vô hình bổ sung để bạn có thể dễ dàng tham chiếu hơn giữa hai bảng. Hàm fnUpdate() cũng hoạt động với các chỉ mục từ fnGetData().

Tôi không chắc chắn, nhưng có thể bạn phải gọi hàm myTimeline.fnDraw() ngay trước hoặc sau khi bảng hiển thị lại để kích hoạt để hiển thị dữ liệu mới.

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