Jak zaktualizować inne komponenty podczas wymiany wierszy lub stron w
Chciałbym zaktualizować komponent pokazujący dane związane z informacjami wyświetlanymi na bieżącej stronie a primefaces dataTable, ale nie mogłem znaleźć żadnych informacji o przechwytywaniu zdarzeń Ajax, takich jak
onRowsPerPageChange lub onPageChanged.
Czy jest na to sposób?
Korzystanie z PrimeFaces 3.0.m3 i Glassfish 3.1
Oto mój stół. Komponent, który chcę zaktualizować, to kolejna tabela danych w stopce pierwszej:
<p:dataTable id="timbrature_dt"
value="#{timbratureMBean.dataModel}"
paginator="true"
rows="12"
lazy="true"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
rowsPerPageTemplate="6,12,24"
currentPageReportTemplate="#{msgs.pagina} {currentPage} #{msgs.of} {totalPages}"
var="tdett"
widgetVar="ttable"
selection="#{timbratureMBean.selezione}"
selectionMode="single">
<p:ajax event="rowSelect" listener="#{timbratureMBean.onRowSelect}"
update="display :timbrature_dt:giustificativi_dt"
oncomplete="timbDialog.show()"/>
<f:facet name="header">
<h:panelGrid columns="1" columnClasses="columnclass-noborders">
<p:outputPanel>
<h:outputText value="#{msgs.dal}: "/>
<p:calendar value="#{timbratureMBean.daData}"
pattern="dd/MM/yyyy"
locale="it"
showButtonPanel="true"
navigator="true"
mindate="01/01/2003"
maxdate="#{timbratureMBean.oggi}">
<p:ajax event="dateSelect" listener="#{timbratureMBean.dataChangeListener}"
update="timbrature_dt :timbrature_dt:giustificativi_dt"/>
</p:calendar>
<h:outputText value=" #{msgs.al}: "/>
<p:calendar value="#{timbratureMBean.aData}"
pattern="dd/MM/yyyy"
locale="it"
showButtonPanel="true"
navigator="true"
mindate="01/01/2003"
maxdate="#{timbratureMBean.oggi}">
<p:ajax event="dateSelect" listener="#{timbratureMBean.dataChangeListener}"
update="timbrature_dt :timbrature_dt:giustificativi_dt"/>
</p:calendar>
</p:outputPanel>
<h:outputText value="#{msgs.timbrature}"/>
</h:panelGrid> </f:facet>
<p:column>
<f:facet name="header">
#{msgs.data_comp}
</f:facet>
<amp:outputData value="#{tdett.sDtComp}"/>
</p:column> <p:column>
<f:facet name="header">
#{msgs.data_reale}
</f:facet>
<amp:outputData value="#{tdett.sDtTimb}"/>
</p:column> <p:column>
<f:facet name="header">
#{msgs.terminale}
</f:facet>
<h:outputText value="#{tdett.nrTer}"/>
</p:column> <p:column filterBy="#{tdett.eU}" filterOptions="#{timbratureMBean.euOptionList}">
<f:facet name="header">
#{msgs.verso}
</f:facet>
<h:panelGroup>
<h:outputText value="#{msgs.entrata}" rendered="#{tdett.eU == 'E'}"/>
<h:outputText value="#{msgs.uscita}" rendered="#{tdett.eU == 'U'}"/>
</h:panelGroup>
</p:column> <p:column>
<f:facet name="header">
#{msgs.ora_valida}
</f:facet>
<h:outputText value="#{tdett.oraValida}"/>
</p:column> <p:column>
<f:facet name="header">
#{msgs.ora_reale}
</f:facet>
<h:outputText value="#{tdett.oraReale}"/>
</p:column> <f:facet name="footer">
<p:dataTable id="giustificativi_dt"
value="#{timbratureMBean.dataList}"
var="gius"
widgetVar="gtable">
<f:facet name="header">
<h:panelGrid columns="1" columnClasses="columnclass-noborders">
<h:outputText value="#{msgs.giustificativi}"/>
</h:panelGrid> </f:facet>
<p:column>
<f:facet name="header">
#{msgs.voce}
</f:facet>
<h:outputText value="#{gius.voce}"/>
</p:column> <p:column>
<f:facet name="header">
#{msgs.dal}
</f:facet>
<amp:outputData value="#{gius.sDtIGius}"/>
</p:column> <p:column>
<f:facet name="header">
#{msgs.al}
</f:facet>
<amp:outputData value="#{gius.sDtFGius}"/>
</p:column> <p:column>
<f:facet name="header">
#{msgs.nr_giorni}
</f:facet>
<h:outputText value="#{gius.nrGiorni}"/>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.ora_inizio}
</f:facet>
<amp:outputNvl value="#{gius.oraIGius}" nullval="-"/>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.ora_fine}
</f:facet>
<amp:outputNvl value="#{gius.oraFGius}" nullval="-"/> </p:column>
<p:column>
<f:facet name="header">
#{msgs.nr_ore}
</f:facet>
<amp:outputNvl value="#{gius.nrOre}" nullval="-"/>
</p:column>
<p:column>
<f:facet name="header">
#{msgs.nr_minuti}
</f:facet>
<amp:outputNvl value="#{gius.nrMinuti}" nullval="-"/>
</p:column>
</p:dataTable>
</f:facet>
</p:dataTable> <p:dialog header="Info" widgetVar="timbDialog" resizable="false"
width="200" showEffect="clip" hideEffect="clip"> <h:panelGrid id="display" columns="2" cellpadding="4"> <h:outputText value="Data:" style="font-weight: bold"/>
<amp:outputData value="#{timbratureMBean.selezione.sDtComp}"/> <h:outputText value="Pausa pranzo ridotta: " style="font-weight: bold"/>
<h:outputText value="#{timbratureMBean.gestPausaPranzo}"/> <h:outputText value="Timbratura non allineata: " style="font-weight: bold"/>
<h:outputText value="#{timbratureMBean.timbNonAllineate}"/> </h:panelGrid>
</p:dialog>
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
2 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
istnieje wydarzenie dotyczące zmiany strony, patrz tutaj
http://cagataycivici.wordpress ... hooks
http://cagataycivici.wordpress ... ooks/
/
chociaż wciąż szukam wydarzenia dla onChangeRows
ale mój obecny problem polega tylko na przechowywaniu wyboru użytkownika, w rzeczywistości to zdarzenie strony decyduje o zapisaniu zarówno strony, na której jestem, jak i liczby zaznaczonych wierszy. Jeśli
onPaginate
zaimplementowane w ten sposób:
Możesz zobaczyć, na której stronie się znajdujesz i ile wierszy jest zaznaczonych. I to zdarzenie jest wyzwalane zarówno w przypadku zmiany strony, jak i zmiany liczby wyświetlanych wierszy.
Anonimowy użytkownik
Potwierdzenie od:
Znalazłem dość prosty sposób na zaimplementowanie tego, jednym z problemów, które napotkałem w rozwiązaniu udik było to, że gdy wywołano metodę onPaginate (), nie miała ona ostatnio wybranej wartości.
Oto, co zrobiłem, aby upewnić się, że zawsze masz najnowszą wartość i możesz zapisać/załadować ją do bazy danych lub pliku cookie lub cokolwiek (zapisujemy to w pliku cookie).
a wtedy nasz kontroler wygląda tak:
Większość magii dzieje się w zdalnym poleceniu, które zostanie uruchomione po zdarzeniu ajax, aby upewnić się, że controller.rowsPerPage został poprawnie zaktualizowany.