在 primefaces 数据表中,轮询未保留排序和过滤

Posted

技术标签:

【中文标题】在 primefaces 数据表中,轮询未保留排序和过滤【英文标题】:In primefaces dataTable Sort and Filter Not Preserved with Poll 【发布时间】:2013-07-16 11:31:18 【问题描述】:

我一直在尝试在 poll 更新表格时保留排序和过滤。不幸的是,我无法做到这一点。

当dataTable每两秒或任何间隔刷新一次时,通过轮询,过滤值被删除并且列,当点击时,无论点击多少次列标题都只会升序排序。此外,排序箭头始终显示为“降序”。

除非我遗漏了什么,否则我认为这是 dataTable 中的一个错误。

请看一下,如果这是错误,或者我的实现不正确,请告诉我。我一直试图让这个工作好几天了。任何帮助将不胜感激。

            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml"
               xmlns:ui="http://java.sun.com/jsf/facelets"
               xmlns:h="http://java.sun.com/jsf/html"
               xmlns:f="http://java.sun.com/jsf/core"
               xmlns:p="http://primefaces.prime.com.tr/ui">

            <f:view contentType="text/html">

               <h:head>
               </h:head>

               <h:body>

                  <h:form id="pollForm">
                     <p:poll id="poll" widgetVar="pollVar" interval="2"
                        listener="#tableBean.update" async="true" autoStart="true" />
                  </h:form>

                  <h:form>

                     <p:outputPanel autoUpdate="true">
                        <p:dataTable var="car" value="#tableBean.carsSmall">
                           <f:facet name="header">  
                              Ajax Sorting  
                          </f:facet>

                           <p:column sortBy="#car.model">
                              <f:facet name="header">
                                 <h:outputText value="Model" />
                              </f:facet>
                              <h:outputText value="#car.model" />
                           </p:column>

                           <p:column sortBy="#car.year">
                              <f:facet name="header">
                                 <h:outputText value="Year" />
                              </f:facet>
                              <h:outputText value="#car.year" />
                           </p:column>

                           <p:column sortBy="#car.manufacturer" 
                              filterBy="#car.manufacturer">
                              <f:facet name="header">
                                 <h:outputText value="Manufacturer" />
                              </f:facet>
                              <h:outputText value="#car.manufacturer" />
                           </p:column>

                           <p:column sortBy="#car.color">
                              <f:facet name="header">
                                 <h:outputText value="Color" />
                              </f:facet>
                              <h:outputText value="#car.color" />
                           </p:column>
                        </p:dataTable>
                     </p:outputPanel>
                  </h:form>

               </h:body>

            </f:view>
            </html>

【问题讨论】:

【参考方案1】:

您可以尝试为您的 dataTable 提供一个 Id,然后调用 dataTableId.filter 吗?它对我有用。

<p:poll id="pollAutoUpdate" interval="5" oncomplete="entityTable.filter()" autoStart="false" stop="true" widgetVar="myPoll" />

【讨论】:

以上是关于在 primefaces 数据表中,轮询未保留排序和过滤的主要内容,如果未能解决你的问题,请参考以下文章

使用JSF和PrimeFaces进行自适应轮询

在 primefaces 数据表中排序

如何以编程方式重新排序primefaces数据表中的列

无法阻止Primefaces民意调查

过滤后的 Primefaces 数据表排序

Primefaces数据表排序和过滤直到rowSelect才起作用