Primefaces columToggler 失去对过滤器的影响

Primefaces columToggler losing effect on filters

我有一个带过滤器的惰性数据表,还可以选择使用 切换列,它在第一次时工作正常,但如果我删除了 3 列,然后创建一个新过滤器,则 columToggler 保持其状态选择和这些列的 headers 也是不可见的,但值再次出现...... 听起来有点奇怪,所以我会解释一下。

所以在选择列后我得到:

但是当我对数据表进行一些过滤或排序时,我得到:

我通过以下方式声明我的 columnToggler:

                <f:facet name="header">
                    Lista de CSRs

                    <p:commandButton id="toggler" update="@form" type="button"
                        value="Columns" style="float:right" icon="ui-icon-calculator" />
                    <p:columnToggler datasource="csrTable" trigger="toggler" />
                </f:facet>

如果遗漏了任何其他需要的信息,请告诉我。

我在 primefaces 博客上找到了答案:http://blog.primefaces.org/?p=3341

我将 columToggler 更改为:

<p:columnToggler datasource="csrTable" trigger="toggler" >
                        <p:ajax event="toggle" listener="#{csrBean.onToggle}" />
                    </p:columnToggler>

然后在我的 Bean 上添加了以下内容:

private List<Boolean> colunas; //Getters and setters

public void init(){

       setColunas(Arrays.asList(true, true, true, true, true, true, true, true, true, true, true));
}

public void onToggle(ToggleEvent e) {
        getColunas().set((Integer) e.getData(), e.getVisibility() == Visibility.VISIBLE);
    }

然后我在每个列上添加了渲染状态:

<p:column headerText="Numero" sortBy="#{csr.numero}"
                    filterBy="#{csr.numero}" rendered="#{csrBean.colunas[0]}">

完成。