2012-09-12 4 views
9

Ich versuche, eine Datentabelle zu erstellen, die eine BlockUI anzeigt, wann immer es beschäftigt ist, und ich war meistens erfolgreich. Es wird jetzt ausgeblendet und zeigt "Loading ...", wenn ich auf eine der beiden Befehlsschaltflächen klicke, die Datentabelle durch Klicken auf eine Kopfzeile oder durch die Datentabelle sortieren. Sie können den Code dafür unten sehen.PrimesFaces blockUI funktioniert nicht mehr nach AJAX-Update

Das Problem ist, dass, nachdem ich eine der Befehlsschaltflächen (die eine Ajax-Aktualisierung auf dem blockierten Element ausgeführt wird), nachfolgende Aktionen nicht die BlockUI auslösen (bis ich die Seite aktualisieren). Zum Beispiel:

  • laden Seite
  • ein Datatable-Header klicken - BlockUI erscheint bis Tisch
  • Klicken Sie auf eine der Datentabelle Seite Navigationstasten beendet Sortierung - BlockUI wird angezeigt, bis die Seite geladen ist
  • Click Eine der Befehlsschaltflächen - blockUI wird angezeigt, bis der actionListener der Schaltfläche beendet ist
  • Klicken Sie auf einen Datatable-Header - Tabelle sortiert, aber BlockUI wird nicht angezeigt.
  • Klicken Sie auf eine der Datentabelle Seite Navigationstasten - Seite geladen wird, aber BlockUI erscheint nicht
  • Klicken Sie auf eine der command - Actionläufe und Tabellenaktualisierungen, aber BlockUI erscheint nicht
  • Reload der Seite - alles wieder richtig funktioniert

das Update command Ändern = ‚‘ Attribut ajax = ‚false‘ bewirkt, dass die Sortierung/Paging immer die BlockUI anzuzeigen, aber die command~~POS=TRUNC nie die BlockUI anzuzeigen.

Irgendwelche Ideen?

<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

ich habe irgendwie ein ähnliches Szenario wie Ihr in meinem Projekt, aber ich die ganze Form nach auf die Schaltfläche klickt aktualisieren ... Ich weiß nicht, ob das ist, was Sie obwohl – PermGenError

Antwort

17

Das Attribut trigger bindet jQuery-Listener an die angegebenen Elemente. Wenn Sie jedoch ein Element aktualisieren, geht die Bindung verloren. Ich weiß nicht, ob es funktioniert, aber Sie könnten versuchen, die <p:blockUI innerhalb der resultsPanel zu bewegen. Ich vermute, dass die BlockUI auch aktualisiert wird, wenn Sie das Panel aktualisieren und den Listener erneut an die Datentabelle binden.

<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

tun möchte ich hatte dasselbe Problem, aber Ihre Antwort löste es .. Ich hatte 'Blockui' außerhalb der Form und das ist, warum ich ein Problem gut bekam, danke Mann (Y) –

0

Ich habe das gleiche Problem und die Art des simillar Szenarios hat:

<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"/> 

Das Problem war, dass Panel Tasten beide von Ajax aktualisiert wurden, und durch BlockUI blockiert. Ich hatte es in zwei Teile zu teilen:

<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

Ich sehe nicht, was blockUI hier auslöst? – Danijel

+0

ich blockUI programmatisch aus Code auslösen, wenn ich mich recht erinnere. – Kangur

Verwandte Themen