我在Primefaces 3.5中有一个DataTable,如此,
<p:panel id="dataTablePanel" toggleable="true" toggleOrientation="horizontal" closable="false" header="Data">
<p:dataTable id="dataTable" var="row" value="#{bean}"
lazy="true"
pageLinks="10"
paginator="true"
sortMode="multiple"
resizableColumns="true"
sortOrder="descending"
editable="true"
filterEvent="keyup"
selection="#{bean.selectedValues}"
rowsPerPageTemplate="5,10,15"
rows="10"
rowKey="#{row.id}"
rowIndexVar="rowIndex"
editMode="row">
...
</p:dataTable>
</p:panel>
我正在使用<p:blockUI>
来阻止此DataTable,同时正在对此DataTable执行某些操作。
<p:blockUI block="dataTable" trigger="dataTable">
Loading<br />
<p:graphicImage value="../resources/images/ajax_loader_image/ajax-loader.gif"/>
</p:blockUI>
这很好用。
我正在使用<p:commandButton>
,当按下时会导致一行插入数据库,因此DataTable会通过AJAX更新(此按钮由另一个具有id属性id="panel"
的面板保存和一些必要的UIComponents,如<p:inputText>
等。)
<p:commandButton
id="btnSubmit"
update="dataTable panel"
actionListener="#{bean.insert}"
icon="ui-icon-check"
value="Save"/>
添加行时,DataTable会更新,而<p:blockUI>
在后面不起作用。为什么会这样?
因此,我暂时阻止了包含DataTable的面板,
<p:blockUI block="dataTablePanel" trigger="dataTable">
Loading<br />
<p:graphicImage value="../resources/images/ajax_loader_image/ajax-loader.gif"/>
</p:blockUI>
在这种情况下,block="dataTable"
已更改为block="dataTablePanel"
。
为什么DataTable在通过AJAX更新后无法单独阻止?