我正在尝试创建一个数据表,该数据表在忙时显示一个blockUI,并且我大多数时候都成功了。现在,当我单击两个commandButtons中的任何一个,通过单击标题对数据表进行排序,或在数据表中翻页时,它都会变灰并显示“正在加载…”。您可以在下面查看其代码。
问题是,在我使用了一个commandButtons(在受阻止的元素上运行ajax更新)之后,后续操作不会触发blockUI(直到刷新页面)。例如:
将commandButtons的update =“”属性更改为ajax =“ false”会使排序/分页始终显示blockUI,而commandButtons则从不显示blockUI。
有任何想法吗?
<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>
该trigger属性将jQuery侦听器绑定到指定的元素。但是,如果更新元素,绑定将丢失。我不知道它是否有效,但是您可以尝试将的<p:blockUI内部移动resultsPanel。我怀疑在更新面板时,blockUI也将更新,从而将侦听器重新绑定到数据表。
trigger
<p:blockUI
resultsPanel
<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>