执行远程命令后 Primefaces 网格未更新
Primefaces grid was not updated after executing remote command
我有一个数据表,其中包含列过滤器和删除行的选项。当 table 处于初始状态时,如果我删除行,则 table 会更新。如果我应用过滤器并删除显示的行之一,过滤的结果将保留,直到我刷新页面或更改过滤器。
代码如下:
<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>
在 backingBean 中,我将其从数据库中删除,然后再次加载数据:
public void deleteModel() {
try {
service.deleteOemModel(selectedModel.getId());
models= service.getOemModels();
} ...
}
其中模型是绑定列表。
有什么提示吗?我试图更改 remotecommand 的更新属性,以更新整个表单,但没有任何帮助。
您必须重新过滤,因为过滤器已缓存。
如本例所述 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 和不使用 PF,我现在不喜欢 Primefaces :D
我有一个数据表,其中包含列过滤器和删除行的选项。当 table 处于初始状态时,如果我删除行,则 table 会更新。如果我应用过滤器并删除显示的行之一,过滤的结果将保留,直到我刷新页面或更改过滤器。
代码如下:
<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>
在 backingBean 中,我将其从数据库中删除,然后再次加载数据:
public void deleteModel() {
try {
service.deleteOemModel(selectedModel.getId());
models= service.getOemModels();
} ...
}
其中模型是绑定列表。
有什么提示吗?我试图更改 remotecommand 的更新属性,以更新整个表单,但没有任何帮助。
您必须重新过滤,因为过滤器已缓存。 如本例所述 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 和不使用 PF,我现在不喜欢 Primefaces :D