2012-01-08 18 views
5

Tôi cần phải đặt bộ lọc toàn cục của p: dataTable bên ngoài chính bảng,Có thể đặt Bộ lọc chung bên ngoài p: dataTable không?

Tôi muốn đặt nó bên ngoài biểu mẫu trong đó dữ liệu có thể tồn tại, nhưng để bắt đầu đặt bộ lọc bên trong MẪU datatable ngoài DataTable riêng của mình sẽ đủ

Ngay cả khi tôi đặt các bộ lọc bên trong MẪU DataTable nhưng ngoài bản thân DataTable, nó ngưng hoạt động (nó hoạt động 100% bên trong p: DataTable chính nó)

Dưới đây là định nghĩa của bộ lọc chính nó

<p:inputText id="globalFilter" onkeyup="myTableNameTable.filter()" style="width:150px;"/> 

Trả lời

7

Tôi đã giải quyết sự cố bằng nút "proxy".

tôi đặt h:panelGroup bao quanh <p:inputText id="globalFilter"> với display:none phong cách, như thế này:

<h:panelGroup style="display:none"> 

sau đó thêm vào một văn bản đầu vào tại chỗ hoàn toàn khác

<h:panelGroup id="myFilter" > 
    <h:inputText id="myFilter_text" /> 
</h:panelGroup> 

Và ràng buộc một hàm JS trong đó sử dụng Chức năng jQuery on() (trong phiên bản jQuery cũ hơn, bạn có thể sử dụng delegete()), như sau:

function searchKeyPressedHandler() { 
     $(document).on("keyup", "#myFilter input", function (event) { 
      var searchValue = document 
       .getElementById('myFilter_text').value; 

      $("#myTableId\\:globalFilter").val(searchValue); 
      $("#myTableId\\:globalFilter").trigger('keyup') 
     }); 
    } 

sử dụng các $() và on() bởi vì tôi đang sử dụng thêm thư viện jQuery 1.7.1, nếu không tôi đã phải sử dụng jQuery() và thay vì

$(document).on("keyup", "#myFilter input", 

Tôi sẽ sử dụng

jQuery(document).delegate("#myFilter input","keyup",... 

(chỉ cần chuyển đối số đầu tiên và đối số thứ hai)

Đó là nó, và tôi tự do đặt đầu vào bộ lọc ở nơi tôi muốn.

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