是否可以将全局过滤器放在p:dataTable之外?

Dan*_*iel 5 primefaces jsf-2

我需要将p:dataTable的全局过滤器放在表本身之外,

我想将它放在数据表存在的形式之外,但是为了开始将过滤器放在数据表FORM中,但在数据表本身之外就足够了

即使我将过滤器放在数据表FORM中但在数据表本身之外,它也会停止工作(它在p:dataTable本身内100%工作)

这是过滤器本身的定义

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

Dan*_*iel 7

我使用"代理"按钮解决了这个问题.

我设置了h:panelGroup那个围绕<p:inputText id="globalFilter">display:none风格的东西,像这样:

<h:panelGroup style="display:none">  
Run Code Online (Sandbox Code Playgroud)

然后在完全其他地方添加了输入文本

<h:panelGroup id="myFilter" >
    <h:inputText id="myFilter_text" />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

绑定一个使用jQuery on()函数的JS函数(在你可以使用的旧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')
        });
    }
Run Code Online (Sandbox Code Playgroud)

使用$()和on()因为我正在使用额外的jQuery 1.7.1库,否则我不得不使用 jQuery()而不是

$(document).on("keyup", "#myFilter input",
Run Code Online (Sandbox Code Playgroud)

我会用

jQuery(document).delegate("#myFilter input","keyup",... 
Run Code Online (Sandbox Code Playgroud)

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

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