执行远程命令后,Primefaces网格未更新

时间:2015-09-21 09:05:14

标签: jsf primefaces datatable filtering

我有一个dataTable,其中包含列上的过滤器和删除行的选项。当表处于初始状态时,如果删除行,则表将更新。如果我应用过滤器并删除其中一个显示的行,则过滤结果仍然存在,直到我刷新页面或更改过滤器。

以下是代码:

object data;
// rest of your code

在backingBean中,我将其从数据库中删除,然后再次加载数据:

<h:form id="form">
    <p:dataTable id="tdataTable" var="tdata" value="#{oemModel.models}" widgetVar="oemModelsTable" editable="true" editMode="cell"
                scrollable="true" scrollHeight="500" paginator="true" rows="15" 
                             emptyMessage="No tdatas found with given criteria" filteredValue="#{oemModel.filteredOemModels}">
    </p:dataTable>

               <p:dialog id="deleteModelDialog" header="Delete " widgetVar="deleteDialog" appendTo="@(body)" showEffect="fade" hideEffect="fade" height="150" width="350" modal="true" resizable="false" >
                    <h:panelGroup id="deleteModelPanel">
                        <div align="center">
                            <h:outputText value="Are you sure?" />
                            <p>
                                <h:panelGrid columns="2">
                                    <p:commandButton value="Yes" icon="ui-icon-check" onclick="PF('waitDialog').show();deleteModel();" />
                                    <p:commandButton value="No" icon="ui-icon-close" onclick="PF('deleteDialog').hide()"/>
                                </h:panelGrid>
                            </p>
                        </div>
                    </h:panelGroup>
                </p:dialog>

                <p:remoteCommand name="deleteModel" update="tdataTable" actionListener="#{bBean.deleteModel}" oncomplete="PF('waitDialog').hide();PF('deleteDialog').hide();"/>
 </h:form>

其中模型是绑定列表。

任何提示?我试图更改remotecommand上的update属性,以更新整个表单,但没有任何帮助。

1 个答案:

答案 0 :(得分:1)

您必须再次过滤,因为过滤器已缓存。 如本例中所述Ajax update doesn't work, when using filter on p:dataTable 你应该试试:

<p:remoteCommand name="deleteModel" update="tdataTable" actionListener="#{bBean.deleteModel}" oncomplete="PF('waitDialog').hide();PF('deleteDialog').hide(); PF('oemModelsTable').filter()"/>

尝试使用PF而没有,我现在不会进入Primefaces:D