Ajax 如何在PrimeFaces中关闭对话框后刷新p:dataTable?
一旦我关闭了Ajax 如何在PrimeFaces中关闭对话框后刷新p:dataTable?,ajax,jsf,primefaces,datatable,Ajax,Jsf,Primefaces,Datatable,一旦我关闭了对话框,我需要您的帮助,以分页方式刷新整个数据表。关闭对话框后使用当前代码,数据表将被刷新,如果所选项目位于第一页,我可以看到更新 但是,如果我使用过滤器搜索特定项目,然后单击视图图标查看对话框,然后关闭对话框。dataTable将不会刷新,除非我从筛选器中删除了搜索的项目,然后我再次尝试搜索,我将找到更新 该页面的代码为: <h:form id="Requests"> <p:dataTable id="PendingRequests"
对话框
,我需要您的帮助,以分页方式刷新整个数据表。关闭对话框后使用当前代码
,数据表
将被刷新,如果所选项目位于第一页,我可以看到更新
但是,如果我使用过滤器搜索特定项目,然后单击视图图标查看对话框,然后关闭对话框
。dataTable
将不会刷新,除非我从筛选器中删除了搜索的项目,然后我再次尝试搜索,我将找到更新
该页面的代码为:
<h:form id="Requests">
<p:dataTable id="PendingRequests"
var="hr"
value="#{hrd.pendingRequests}"
paginator="true"
rows="15"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
rowsPerPageTemplate="5,10,15"
paginatorPosition="bottom"
filteredValue="#{hrd.filteredPendingRequests}">
<p:column headerText="Req. No." sortBy="#{hr.reqNo}" filterMatchMode="contains" filterBy="#{hr.reqNo}">
<h:outputText value="#{hr.reqNo}"/>
</p:column>
<p:column headerText="Print Count" filterMatchMode="contains" filterBy="#{hr.printCount}">
<h:outputText value="#{hr.printCount}"/>
</p:column>
<p:column>
<f:facet name="header">View</f:facet>
<p:commandButton id="submitbutton"
update=":Requests:#{hr.dialogueName} "
oncomplete="PF('#{hr.certificateDialogue}').show()"
title="View">
<f:setPropertyActionListener value="#{hr}" target="#{hrd.selectedRequest}"/>
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
而updateDataable()
方法的代码如下:
public void UpdateDatatable(CloseEvent event) {
listPendingRequests = new ArrayList<PendingRequests>();
try {
//Select Statement
while (result.next()) {
PendingRequests pendingList = new PendingRequests();
reqNo = result.getString("REQ_SEQ_NO");
printCount = result.getString("DOC_PRINTED_CNT" + 1);
pendingList.setReqNo(reqNo);
pendingList.setPrintCount(printCount);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void updateDataable(CloseEvent事件){
listPendingRequests=new ArrayList();
试一试{
//Select语句
while(result.next()){
PendingRequests pendingList=新的PendingRequests();
reqNo=result.getString(“REQ序列号”);
printCount=result.getString(“DOC\u PRINTED\u CNT”+1);
待处理列表。设置请求编号(请求编号);
pendingList.setPrintCount(printCount);
}
}捕获(例外e){
e、 printStackTrace();
}
}
将widgetvar添加到数据表widgetvar=“dtWidgetVar”
然后:
<p:ajax event="close" listener="#{hrd.UpdateDatatable}" update=":Requests:PendingRequests" onComplete="PF('dtWidgetVar').filter()" />
我希望这有助于:
<p:dialog id="dialog-test" onHide="refreshTable();">
...
</p:dialog>
...
将以下内容放在页面末尾:
<p:remoteCommand name="refreshTable" action="#{hrd.UpdateDatatable}"
partialSubmit="true" process="@this" update="Requests" />
如果需要将对话框中的信息发送到backBean,可能需要更改流程,添加要发送的对话框id或元素id:
<p:remoteCommand name="refreshTable" action="#{hrd.UpdateDatatable}"
partialSubmit="true" process="@this, dialog-test" update="Requests" />
祝你好运 您似乎正在使用filteredValue。。。你也会更新那里的记录吗?或者可能不通过ajax标记上的update属性实际更新数据表,而是为数据表提供一个widgetVar=“dtWidgetVar”
属性,并在ajax标记上执行onComplete=“PF('dtWidgetVar').filter()”
tagb@Kukeltje是的,我将筛选一个值,然后单击图标查看它。如果我关闭对话框,我需要将记录计数更新为递增1。我将尝试您的建议,在关闭对话框时将onComplete保留在ajax标记中,我会看到。但是,onComplete=“PF('dtWidgetVar').filter()”是什么意思?@Kukeltje我的问题是,我想在关闭打开的数据库后刷新数据表dialog@Kukeltje谢谢你的帮助。。。它起作用了不客气,很高兴它起了作用
<p:remoteCommand name="refreshTable" action="#{hrd.UpdateDatatable}"
partialSubmit="true" process="@this, dialog-test" update="Requests" />