我有一个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属性,以更新整个表单,但没有任何帮助。
答案 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