2012-01-08 61 views
5

我需要把p的全局過濾器:表本身的dataTable外,是否可以將全局過濾器放在p:dataTable之外?

我想將其放置在其中的數據表中存在的形式外,但開始將過濾器的數據表FORM內,但該數據表外本身就足以

即使當我把過濾器的數據表表單中,但數據表本身之外,它停止工作(它的工作原理100%的p內:dataTable的本身)

這裏是定義過濾器本身

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

回答

7

我使用「代理」按鈕解決了問題。

我設置h:panelGroupdisplay:none風格包圍<p:inputText id="globalFilter">,就像這樣:

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

然後在完全別的地方

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

添加輸入文本和約束,它使用一個JS函數jQuery on()函數(在較老的jQuery版本中,您可以使用delegete()),如下所示:

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

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

使用的$()和(),因爲我使用jQuery的額外1.7.1庫,否則我只好用jQuery()和替代

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

我會用

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

(剛剛切換了第一個和第二個參數)

就是這樣,我可以自由地將過濾器輸入放在任何我想要的地方。

相關問題