1

我在 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>

在对这个 DataTable 执行一些操作时,我使用<p:blockUI> 如下来阻止这个 DataTable。

<p:blockUI block="dataTable" trigger="dataTable">
    Loading<br />
    <p:graphicImage value="../resources/images/ajax_loader_image/ajax-loader.gif"/>
</p:blockUI>

这工作正常。


我正在使用<p:commandButton>which 当按下时会导致一行插入到数据库中,因此 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"

为什么通过 AJAX 更新后 DataTable 没有单独被阻止?

4

0 回答 0