2012-01-08 65 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",... 

(刚刚切换了第一个和第二个参数)

就是这样,我可以自由地将过滤器输入放在任何我想要的地方。

相关问题