我想更新显示相关的一个primefaces DataTable中当前页面显示的信息数据的组件,但我无法找到有关拦截如AJAX事件的任何信息 onRowsPerPageChange或onPageChanged。
有没有办法做到这一点?
使用primefaces 3.0.M3和Glassfish 3.1
下面是我的表。我想更新的组件是第一个页脚里面的其他DataTable:
<电话号码:dataTable中的id =timbrature_dt
值=#{timbratureMBean.dataModel}
分页程序=真
行=12
懒惰=真正的
paginatorTemplate ={RowsPerPageDropdown} {FirstPageLink} {previousPageLink} {CurrentPageReport} {NextPageLink} {} LastPageLink
rowsPerPageTemplate =6,12,24
currentPageReportTemplate =#{msgs.pagina} {当前页}#{msgs.of} {}总页数
VAR =tdett
widgetVar =的TTable
选择=#{timbratureMBean.selezione}
的SelectionMode =单一>
<电话号码:AJAX事件=rowSelect监听器=#{timbratureMBean.onRowSelect}
更新=显示:timbrature_dt:giustificativi_dt
的onComplete =timbDialog.show()/>
< F:面名=标头>
&所述; H:panelGrid的列=1columnClasses =columnClass的-noborders>
<电话号码:outputPanel>
< H:的outputText值=#{msgs.dal}:/>
<电话号码:日历值=#{timbratureMBean.daData}
模式=DD / MM / YYYY
区域设置=它
showButtonPanel =真
航海家=真
为MinDate =01/01/2003
的maxDate =#{timbratureMBean.oggi}>
<电话号码:AJAX事件=dateSelect监听器=#{timbratureMBean.dataChangeListener}
更新=timbrature_dt:timbrature_dt:giustificativi_dt/>
< / P:日历>
< H:的outputText值=#{msgs.al}:/>
<电话号码:日历值=#{timbratureMBean.aData}
模式=DD / MM / YYYY
区域设置=它
showButtonPanel =真
航海家=真
为MinDate =01/01/2003
的maxDate =#{timbratureMBean.oggi}>
<电话号码:AJAX事件=dateSelect监听器=#{timbratureMBean.dataChangeListener}
更新=timbrature_dt:timbrature_dt:giustificativi_dt/>
< / P:日历>
< / P:outputPanel>
< H:的outputText值=#{msgs.timbrature}/>
< / H:panelGrid的>
< / F:面>
<电话号码:柱>
< F:面名=标头>
#{msgs.data_comp}
< / F:面>
<功放:outputData值=#{tdett.sDtComp}/>
< / P:列>
<电话号码:柱>
< F:面名=标头>
#{msgs.data_reale}
< / F:面>
<功放:outputData值=#{tdett.sDtTimb}/>
< / P:列>
<电话号码:柱>
< F:面名=标头>
#{msgs.terminale}
< / F:面>
< H:的outputText值=#{tdett.nrTer}/>
< / P:列>
<电话号码:列filterBy =#{tdett.eU}filterOptions =#{timbratureMBean.euOptionList}>
< F:面名=标头>
#{msgs.verso}
< / F:面>
< H:panelGroup中>
< H:的outputText值=#{msgs.entrata}呈现=#{tdett.eU =='E'}/>
< H:的outputText值=#{msgs.uscita}呈现=#{tdett.eU =='U'}/>
< /小时:panelGroup中>
< / P:列>
<电话号码:柱>
< F:面名=标头>
#{msgs.ora_valida}
< / F:面>
< H:的outputText值=#{tdett.oraValida}/>
< / P:列>
<电话号码:柱>
< F:面名=标头>
#{msgs.ora_reale}
< / F:面>
< H:的outputText值=#{tdett.oraReale}/>
< / P:列>
< F:面NAME =页脚>
<电话号码:dataTable中的id =giustificativi_dt
值=#{timbratureMBean.dataList}
VAR =gius
widgetVar =gtable>
< F:面名=标头>
&所述; H:panelGrid的列=1columnClasses =columnClass的-noborders>
< H:的outputText值=#{msgs.giustificativi}/>
< / H:panelGrid的>
< / F:面>
<电话号码:柱>
< F:面名=标头>
#{msgs.voce}
< / F:面>
< H:的outputText值=#{gius.voce}/>
< / P:列>
<电话号码:柱>
< F:面名=标头>
#{msgs.dal}
< / F:面>
<功放:outputData值=#{gius.sDtIGius}/>
< / P:列>
<电话号码:柱>
< F:面名=标头>
#{msgs.al}
< / F:面>
<功放:outputData值=#{gius.sDtFGius}/>
< / P:列>
<电话号码:柱>
< F:面名=标头>
#{msgs.nr_giorni}
< / F:面>
< H:的outputText值=#{gius.nrGiorni}/>
< / P:列>
<电话号码:柱>
< F:面名=标头>
#{msgs.ora_inizio}
< / F:面>
<功放:outputNvl值=#{gius.oraIGius}nullval = - />
< / P:列>
<电话号码:柱>
< F:面名=标头>
#{msgs.ora_fine}
< / F:面>
<功放:outputNvl值=#{gius.oraFGius}nullval = - />
< / P:列>
<电话号码:柱>
< F:面名=标头>
#{msgs.nr_ore}
< / F:面>
<功放:outputNvl值=#{gius.nrOre}nullval = - />
< / P:列>
<电话号码:柱>
< F:面名=标头>
#{msgs.nr_minuti}
< / F:面>
<功放:outputNvl值=#{gius.nrMinuti}nullval = - />
< / P:列>
< / P:dataTable的>
< / F:面>
< / P:dataTable的>
<电话号码:对话框标题=信息widgetVar =timbDialog可调整大小=假
WIDTH =200showEffect =夹子hideEffect =剪贴>
< H:panelGrid的ID =显示列=2的cellpadding =4>
< H:的outputText值=数据:风格=字体重量:大胆/>
<功放:outputData值=#{timbratureMBean.selezione.sDtComp}/>
< H:的outputText值=保萨pranzo ridotta:风格=字体重量:大胆/>
< H:的outputText值=#{timbratureMBean.gestPausaPranzo}/>
< H:的outputText值=Timbratura非allineata:风格=字体重量:大胆/>
< H:的outputText值=#{timbratureMBean.timbNonAllineate}/>
< / H:panelGrid的>
< / P:对话框>
解决方案
后,
有一个事件改变一个页面,在这里看到
HTTP://cagataycivici.word$p$pss .COM / 2011/06/10 / DataTable的钩/
<电话号码:数据表分页程序=真正的行=10值=#{bean.items}VAR =项>
<电话号码:AJAX事件=页监听器=#{bean.onPaginate}更新=othercomponents的onComplete =警报('完成')... />
...
虽然我仍然在寻找一个事件onChangeRows
不过,我现在的问题是只存储用户的选择,其实该页面时解决了这两个对我有什么页面,有多少行存储选择。如果 onPaginate 实现了这种方式:
公共无效onPaginate(PageEvent事件){
logger.info(我页:+ event.getPage());
logger.info:(每页的行集+((org.primefaces.component.datatable.DataTable)event.getSource())GetRows的()。)
}
您可以看到你是在什么页面,有多少行被选中。而这个事件被触发既当您更改页面或改变多少行显示。
I would like to update a component showing data related to the info displayed in the current page of a primefaces dataTable but I couldn't find any info about intercepting ajax events like onRowsPerPageChange or onPageChanged.
Is there any way to do that?
Using primefaces 3.0.M3 and Glassfish 3.1
Here is my table. The component I want to update is another dataTable inside the footer of the first one:
<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>
解决方案
Hou,
there is an event for changing a page, see here
http://cagataycivici.wordpress.com/2011/06/10/datatable-hooks/
<p:datatable paginator="true" rows="10" value="#{bean.items}" var="item">
<p:ajax event="page" listener="#{bean.onPaginate}" update="othercomponents" oncomplete="alert('done')"... />
...
though I am still looking for an event for onChangeRows
but, my current problem is only storing user choices, in fact that page event solves storing both on what page I am and how many rows are selected. If onPaginate implements in this way:
public void onPaginate(PageEvent event){
logger.info("I am on page:"+event.getPage());
logger.info("Rows per page set:"+((org.primefaces.component.datatable.DataTable)event.getSource()).getRows());
}
You can see what page you are on and how many rows are selected. And this event is triggered both when you change a page or change how many rows shown.