微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Primefaces ajax更新

我有primefaces数据表,

<p:panel id="resultpanel">
  <p:dataTable id="tbl" var="job" value="#{report.jobModel}"
               paginator="true" rows="#{report.jobModel.pageSize}"
               paginatorPosition="bottom" lazy="true" scrollable="true"
               resizableColumns="true" rendered="#{!empty report.jobModel}"
               emptyMessage="#{messages['common.datatable.emptymessage']}">

    <p:ajax event="filter" listener="#{report.jobModel.onFilter}"
            update="@form" />

    <p:column sortBy="#{job.detail4}" filterBy="#{job.detail4}">
      <f:facet name="header">
        <h:outputText value="#{messages['content.donejobs.ftdi.datatable.fixedfeecolumn.header']}" />
      </f:facet>
      <h:outputText value="#{job.detail4}">
        <f:converter converterId="KurusLiraConverter"></f:converter>
      </h:outputText>
    </p:column>

    <f:facet name="footer">
      <h:outputFormat value="#{messages['content.donejobs.ftdi.datatable.footer']}">
        <f:param value="#{report.jobModel.rowCount}" />
      </h:outputFormat>

      <p:panel layout="block" style="border: 0px; text-align: center;">
        <p:commandLink ajax="false" title="Download Report">
          <p:graphicImage value="/images/excel.png" />
          <p:fileDownload value="#{report.excelFileOfReportTable}" />
        </p:commandLink>
      </p:panel>
    </f:facet>
  </p:dataTable>
</p:panel>

我想过滤表格时更新页脚部分.我试图通过将页脚中的所有内容放在单个面板中来更新页脚,为其提供ID,通过firebug检查此ID,并将其作为值添加到primefaces ajax组件的update属性中.我也对html outputformat和param组件执行了这种方法.但没有成功,最后我试图更新表单,这次整个表格已经呈现为文本文件.有没有办法在过滤后更新表格大小?顺便说一句,我使用的是primefaces 3.0.RC1-SNAPSHOT,并在firefox 7.0.1中进行测试.非常感谢您的关注和评论.

解决方法

here存在一个解决的问题,它们为dataTable代码提供了一个补丁.我的解决方法(又名巨大的黑客)不需要触及我更喜欢的primefaces代码库.我测试了下面的事件,但我不明白为什么它不适用于rowEdit事件.

<p:remoteCommand name="updatefilters" update="table:totalid"></p:remoteCommand>
<p:dataTable id="tabelaMunicipio" value="#{bean.model}" ...>
<p:ajax event="page" oncomplete="updatefilters()"/>
<p:ajax event="filter" oncomplete="updatefilters()"/>   
<p:ajax event="sort" oncomplete="updatefilters()"/>
<p:column headerText="#{msg['id']}" sortBy="#{id}"> 
   <h:outputText value="#{item.id}"></h:outputText>  
   <f:facet name="footer"> 
      <h:outputText value="#{bean.model.totals['id']}" id="totalid"/> 
   </f:facet> 
</p:column> 
...
</p:dataTable>

是的,我使用p:remoteCommand(由p:ajax中的oncomplete客户端钩子调用)来更新页脚行内的组件.与数据本身相比,这会导致页脚更新的微小延迟,但我可以忍受.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐