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]}">
完成。
我有一个带过滤器的惰性数据表,还可以选择使用 切换列,它在第一次时工作正常,但如果我删除了 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]}">
完成。