2012-09-12 11 views
9

Estoy intentando crear una tabla de datos que muestre unaUl de bloque cada vez que esté ocupado, y he tenido un gran éxito. Ahora se pone de color gris y muestra "Cargando ..." cada vez que hago clic en cualquiera de los dos CommandButtons, ordeno la tabla de datos haciendo clic en un encabezado o una página a través de la tabla de datos. Puedes ver el código a continuación.Primefaces blockUI deja de funcionar después de la actualización de Ajax

El problema es que después de haber utilizado uno de los CommandButtons (que ejecuta una actualización de AJAX en el elemento bloqueado), las acciones posteriores no desencadenan el blockUI (hasta que actualice la página). Por ejemplo:

  • página Cargar
  • Haga clic en un encabezado de tabla de datos - aparece blockUI hasta que la mesa se terminó la clasificación
  • Haga clic en uno de los botones de navegación de páginas DataTable - aparece blockUI hasta que la página se carga
  • clic uno de los CommandButtons - blockUI aparece hasta que el actionListener del botón haya finalizado
  • Haga clic en un encabezado datatable - tabla ordena, pero blockUI no aparece.
  • Haga clic en uno de los botones de navegación de páginas DataTable - carga la página, pero blockUI no aparece
  • Haga clic en uno de los botones de comando - carreras actionListener y actualizaciones de la tabla, pero blockUI no aparece
  • cargar la página - todo lo funciona correctamente de nuevo

Cambio de actualización de los botones de comando = '' atributo para ajax = 'false' hace que la clasificación/paginación para mostrar siempre el blockUI, pero los botones de comando a no mostrar la blockUI.

¿Alguna idea?

<div class="buttonDiv"> 
    <p:commandButton ... update="resultsPanel" id="submitButton" ... /> 
    ... 
    <p:commandButton ... update="resultsPanel" id="resetScenarioButton" ... /> 
</div> 
<p:panel header="Results Grid" id="resultsPanel"> 
    ... 
    <p:dataTable ... id="VAResults" ... > 
     ... 
    </p:dataTable> 
    .... 
</p:panel> 
<p:blockUI block="resultsPanel" trigger="submitButton, resetScenarioButton, VAResults"> 
    Loading... 
</p:blockUI> 
+0

La clase I tienen un escenario similar como su en mi proyecto, pero pongo al día todo el formulario después de que el botón de ... No sé si eso es lo que quiere hacer, aunque i – PermGenError

Respuesta

17

El atributo trigger une oyentes jQuery sobre los elementos especificados. Sin embargo, si actualiza un elemento, el enlace se pierde. No sé si funciona, pero podrías intentar mover el <p:blockUI dentro del resultsPanel. Sospecho que cuando actualizas el panel, blockUI también se actualiza y, por lo tanto, vuelve a vincular al oyente con la tabla de datos.

<p:panel header="Results Grid" id="resultsPanel"> 
    ... 
    <p:dataTable ... id="VAResults" ... > 
     ... 
    </p:dataTable> 
    .... 
    <p:blockUI block="resultsPanel" trigger="submitButton, resetScenarioButton, VAResults"> 
    Loading... 
</p:blockUI> 
</p:panel> 
+2

tenía el mismo problema pero su respuesta lo resolvió ... había puesto 'blockui' fuera del formulario y por eso tengo un problema así gracias hombre (Y) –

0

que he tenido el mismo problema y tipo de escenario simillar:

<p:dataTable> 
    .... 
    <p:ajax event="rowSelect" update="buttons" global="false" onstart="blockMessageButtons.show();" oncomplete="blockMessageButtons.hide();"/> 
</p:dataTable> 

<p:outputPanel layout="block" id="buttons"> 
    <!-- content to be blocked --> 
</p:outputPanel> 

<p:blockUI block="buttons" widgetVar="blockMessageButtons"/> 

El problema era que el panel botones se actualizan tanto por el Ajax, y bloqueado por blockUI. Tuve que dividirlo en dos:

<p:dataTable> 
    .... 
    <p:ajax event="rowSelect" update="buttons-content" global="false" onstart="blockMessageButtons.show();" oncomplete="blockMessageButtons.hide();"/> 
</p:dataTable> 

<p:outputPanel layout="block" id="buttons-container"> 
    <p:outputPanel layout="block" id="buttons-content"> 
     <!-- content to be blocked --> 
    </p:outputPanel> 
</p:outputPanel> 

<p:blockUI block="buttons-container" widgetVar="blockMessageButtons"/> 
+0

No veo lo que desencadena el bloqueo de la UI aquí? – Danijel

+0

Estoy activando blockUI programáticamente desde el código, si mal no recuerdo. – Kangur

Cuestiones relacionadas