【发布时间】:2015-04-23 08:30:19
【问题描述】:
我有一个数据表以及排序、过滤器和列切换器。 首先,当我在同一页面中选择和取消选择一列时,一切都很好。
如您所见,我的第一列已经消失了
我的问题是当我使用分页工具转到下一页时,如果我想取消选择一列,它只显示列标题而不显示它们的行,如下所示: 现在显示了最初的隐藏列,但我们有一个差距。最后一列现在是空的,第一列将值带到第二列。
这是我的数据表结构:
<p:dataTable id="datatable" var="mon" value="#{X.resultQuery}"
first="#{dataTableController.first}"
resizableColumns="true"
rows="20"
paginator="true"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="30,40,50"
draggableColumns="true"
paginatorPosition="bottom"
selectionMode="single" rowKey="#{mon[4]}"
>
<f:facet name="header">
<p:commandButton id="toggler" type="button" value="Hide Columns" icon="ui-icon-calculator" />
<p:columnToggler datasource="datatable" trigger="toggler">
<p:ajax event="toggle" listener="#{columnTogglerController.onToggle}" />
</p:columnToggler>
</f:facet>
这是我的 ColumnTogglerController :
public class ColumnTogglerController implements Serializable {
private List<Boolean> list;
/**
* Creates a new instance of ColumnTogglerController
*/
public ColumnTogglerController() {
}
public List<Boolean> getList() {
return list;
}
public void setList(List<Boolean> list) {
this.list = list;
}
@PostConstruct
public void init() {
setList(Arrays.asList(true, true, true, true, true, true, true, true, true, true, true));
}
public void onToggle(ToggleEvent e) {
list.set((Integer) e.getData(), e.getVisibility() == Visibility.VISIBLE);
}
}
基本上我的程序是基于这个博客: http://blog.primefaces.org/?p=3341
感谢您的帮助。
【问题讨论】:
标签: jsf-2 primefaces pagination