首页 > 解决方案 > PrimeFaces 8.0 - Rowexpansion 内表的过滤器正在更新每个行扩展中所有表的数据

问题描述

PrimeFaces 8.0

<p:dataTable value="#{MyView.parents}" var="parent" id="parentID" widgetVar="parentsVar">
   <p:column headerText="Column 1" sortable="true" sortBy="#{parent.name}" filterable="true" filterBy="#{parent.name}" filterMatchMode="contains" filterFunction="#{FilterController.filterByString}">
      <f:facet name="filter">
         <p:selectCheckboxMenu label=""
            onchange="PF('parentsVar').filter()" updateLabel="true">
            <f:selectItems value="#{MyView.namesForFilter}" />
         </p:selectCheckboxMenu>
      </f:facet>
      <h:outputText value="#{parent.name}"/>
   </p:column>
   <p:column >
      <p:rowToggler >
      </p:rowToggler>
   </p:column>
   <p:rowExpansion>
      <p:dataTable value="#{parent.children}" var="child" id="childID" widgetVar="childVar">
         <p:column headerText="Child Type" filterable="true" filterBy="#{child.type}"
            filterMatchMode="contains" filterFunction="#{FilterController.filterByString}">
            <f:facet name="filter">
               <p:selectCheckboxMenu label=""
                  onchange="PF('childVar').filter()">
                  <f:selectItems value="#{utilityPSA.childTypesForFilter}" />
               </p:selectCheckboxMenu>
            </f:facet>
            <h:outputText value="#{child.type}"/>
         </p:column>
      </p:dataTable>
   </p:rowExpansion>
</p:dataTable>

两个问题:

  1. 当我扩展了两个行扩展列时,过滤不起作用
  2. 在行扩展中过滤子表是用相同的过滤子记录替换所有其他行扩展,即使子数据不属于行扩展。

任何帮助表示赞赏。谢谢你的时间。

标签: primefacesprimefaces-datatable

解决方案


推荐阅读