【问题标题】:Primefaces dataTable filter works only oncePrimefaces dataTable 过滤器只工作一次
【发布时间】:2013-09-12 16:01:54
【问题描述】:

我使用 Primefaces 3.5 创建一个带有过滤器的数据表。

<h:form id="table">
     <div class="showRuleStyle">            
        <p:dataTable id="RuleTable" var="e" value="#{ruleListBean.rules}" filteredValue="#{ruleListBean.filteredRules}" styleClass="ruleTable"  paginator="true" paginatorPosition="bottom" rows="15" emptyMessage="Keine Einträge gefunden.">

            <p:column id="companyColumn" headerText="Name" filterBy="#{e.name}" filterOptions="#{ruleListBean.filterNameOptions}" >
                <h:outputText value="#{e.name}"></h:outputText>
            </p:column>

            ...

            <p:column>
                <f:facet name="header"></f:facet>
                <h:commandButton id="DeleteRuleButton" value="Löschen" styleClass="buttondefault" action="#{ruleListBean.removeRule(e)}" update=":table"></h:commandButton>
            </p:column>
        </p:dataTable>
    </div>
</h:form>

现在,我按预期获得了表格,并且可以选择更新表格的过滤器。但是现在,如果我尝试选择不同的过滤器或选择空过滤器,则不会发生任何事情。如果我点击按钮,它会再次工作,我认为这是因为表单的更新。

我尝试添加

 <p:ajax event="filter" update=":table"> 

和其他事件,但它不起作用。

有什么建议吗?

问候 亚历克斯

【问题讨论】:

    标签: primefaces


    【解决方案1】:

    ruleListBean 的范围是什么?我已经尝试了您的代码,它按预期工作(没有 p:ajax)。

    我的 ruleListBean 在视图范围内。

    建议使用比请求更长的范围,例如 viewscope 保留filteredValue,以便过滤后的列表仍然可以访问 过滤。 (PrimeFaces 用户指南第 135 页)

    注意:将 h:commandButton 更改为 p:commandButton,以便您可以使用更新功能。

    【讨论】:

    • 好的,谢谢您的回答。 :) 我现在遇到了问题,dataTable 在第二个
      (包装器)中,过滤器更新程序可以正确处理它。
    • 这里不是这样。它甚至没有排序反转。还将allFoos() 转换为allFoos,然后为allFoos 设置getter/setter 在这里不起作用。
    猜你喜欢
    • 2011-12-12
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2012-09-22
    • 2013-12-04
    相关资源
    最近更新 更多