2011-12-07 27 views
28

Hiện tại tôi có một dữ liệu có một nút cho mỗi bản ghi mà khi được nhấp hiển thị thông tin khác cho tài khoản đó. Khi điều này xảy ra, tôi gọi fnFilter() để lọc hàng cụ thể đó để không có hàng nào khác được hiển thị và người dùng biết rằng thông tin phụ tôi hiển thị là cho tài khoản cụ thể đó. Điều tôi muốn làm là khi người dùng nhấp lại vào thanh công cụ tìm kiếm, nó ẩn thông tin phụ tôi hiển thị, sau đó xóa bộ lọc và hiển thị tất cả các bản ghi gốc có sẵn. Mọi thứ hoạt động tốt, ngoại trừ việc bộ lọc không bị xóa nên chỉ hàng được chọn ban đầu vẫn được hiển thị.JQuery DataTables - Loại bỏ fnFilter và hiển thị tất cả kết quả

Không chắc chắn những gì tôi đang thiếu. Tôi đã thử tất cả mọi thứ từ việc sử dụng fnFilter (''), đến fnDraw(), đến fnReloadAjax(). Không ai trong số này (hoặc bất kỳ sự kết hợp) dường như làm việc!

CẬP NHẬT Tôi dường như đã phân lập được sự cố. Nếu tôi loại bỏ cột # từ fnFilter (accountid, 7), sử dụng fnFilter ('') sẽ hiển thị lại tất cả các bản ghi. Tuy nhiên, tôi thực sự cần lọc theo cột cụ thể đó vì nó là cột duy nhất chứa các giá trị duy nhất cho mỗi bản ghi. Bất kỳ ý tưởng? Tôi đã thử sử dụng fnFilter ('', null) nhưng không thành công.

Đây là mã của tôi:

var oTable = $('.mypbhs_accounts').dataTable({ 
     "bProcessing": true, 
     "sAjaxSource": 'sql/mypbhs_accounts.php',  
     "aaSorting": [[1, "asc" ]], 
     "bJQueryUI": true, 
     "sPaginationType": "full_numbers", 
     //"bStateSave": true, //Use a cookie to save current display of items 
     "aoColumns": [ 
      {"asSorting": [ ], "sClass":"center"}, 
      null, 
      null, 
      null, 
      null, 
      null, 
      null, 
      { "bSearchable": true, "bVisible": false },  
      { "bSearchable": true, "bVisible": false }  
     ], 
     "bScrollCollapse": true, 
     "sScrollX": "100%", 
     "fnInitComplete": function() { 
       oTable.fnAdjustColumnSizing(); 
     } 
    }); 
/*** CLEAR CURRENT ACCOUNT INFO ***/ 
$(document).on('click','.mypbhs_content .dataTables_filter',function(){ //THIS IS CALLED WHEN USER CLICKS INTO THE SEARCH BAR 
    $('.mypbhs_content .dataTables_filter :input').val(''); //CLEAR CURRENT VALUE IN THE SEARCH BAR 
    oTable.fnFilter(''); 
    //oTable.fnDraw(); 
    //oTable.fnReloadAjax(); 
    $('.mypbhs_truform_info').empty(); //REMOVE SUB-INFORMATION SO IT DOESNT GET ASSOCIATED WITH WRONG ACCOUNT 
    $('.control_bar').children('ul.mypbhs_account_controls').empty(); 
}); 

Trả lời

49

Ah tôi dường như đã figured it out. Phải rõ ràng trong các bộ lọc trên cột cụ thể và bộ lọc toàn cầu:

oTable.fnFilter('',7); 
oTable.fnFilter(''); 
-2
"sPaginationType" : "bootstrap", 
"iDisplayLength": 25, 
"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]], 
"bStateSave" : false, 

nếu bạn muốn lưu các kết quả tìm kiếm sau đó đề cập đến

"sPaginationType" : "bootstrap", 
"iDisplayLength": 25, 
"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]], 
"bStateSave" : true, 
+3

Tôi có thiếu một cái gì đó hoặc điều này không trả lời một hoàn toàn câu hỏi khác nhau? – EWit

5

Đơn giản là t o xóa tất cả các bộ lọc sử dụng Datatables> 1.10:

oTable.search('').columns().search('').draw(); 
+1

Nó xuất hiện fnFilter() đã được loại bỏ và đây là câu trả lời chính xác hiện tại. –

0

trên Datatables v1.10

$('.dataTables_filter input[type=search]').val(''); 

làm các trick (xóa hộp tìm kiếm)

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