2012-01-08 30 views
5

necesito para colocar el filtro global de la t: fuera dataTable de la tabla en sí,¿Es posible colocar el filtro global fuera de p: dataTable?

me gustaría colocarlo fuera de la forma en la que se encuentra la tabla de datos, pero para empezar a colocar el filtro dentro del formulario tabla de datos, pero fuera de la tabla de datos en sí será suficiente

Incluso cuando coloco el filtro dentro del formulario tabla de datos, pero fuera de la propia tabla de datos, que deje de funcionar (que funciona al 100% dentro de la t: dataTable sí mismo)

Aquí es la definición del propio filtro

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

Respuesta

7

He resuelto el problema usando un botón "proxy".

que establezca la h:panelGroup que rodeaba la <p:inputText id="globalFilter"> con display:none estilo, así:

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

luego agregó un texto de entrada en completamente otro lugar

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

y encuadernado una función JS que utiliza el jQuery on() función (en la versión más vieja de jQuery puede utilizar delegete()), así:

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

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

Se utiliza el $() y en() porque estoy usando la biblioteca jQuery 1.7.1 adicional, de lo contrario, tuve que usar el jQuery() y en lugar de

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

me gustaría utilizar

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

(acaba de cambiar el primero y el segundo argumento)

Eso es todo, y soy libre de colocar la entrada del filtro donde quiera.

Cuestiones relacionadas