Мне нужна помощь в освещении всего dataTable
с разбивкой на страницы, как только я закрыл dialog
. С текущим кодом после закрытия dialog
dataTable
будет обновлен, если выбранный элемент находится на первой странице, и я могу увидеть обновления.Как обновить p: dataTable после закрытия диалога в PrimeFaces?
Однако, если я искал конкретный элемент с использованием фильтра, а затем я нажал на значок вида, чтобы просмотреть диалоговое окно, а затем закройте dialog
. 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>
И код dialog
является:
<p:dialog id="employmentCertificateDialog"
header="Certificate"
widgetVar="employmentCertificateDialog"
modal="true"
showEffect="fade"
hideEffect="fade"
resizable="true">
<p:ajax event="close"
listener="#{hrd.UpdateDatatable}"
update=":Requests:PendingRequests"/>
</p:dialog>
И метод UpdateDatatable()
имеет код:
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();
}
}
вы, кажется, используете filterValue ... вы также обновляете запись там? Или, может быть, на самом деле не обновлять данные с помощью атрибута update в теге ajax, но предоставить datatable атрибут 'widgetVar = 'dtWidgetVar'' и делать 'onComplete = 'PF (' dtWidgetVar '). Filter()" 'на ajax tagb – Kukeltje
@Kukeltje Да, я буду фильтровать значение, а затем я нажму на значок, чтобы увидеть его. Если я закрою диалог, мне нужно будет обновить этот счетчик, чтобы увеличить его на 1. Я попробую ваше предложение сохранить onComplete в теге ajax при закрытии диалога, и я увижу. Но что означает onComplete = "PF ('dtWidgetVar'). Filter()? – 99maas
@Kukeltje Моя проблема в том, что я хочу обновить dataTable, как только я закрыл открытый диалог – 99maas