我有一個數據表,以及排序,過濾器和columntoggler。 首先,當我選擇並取消選擇同一頁中的一列時,一切都很好。Primefaces ColumnToggler does not與分頁
正如你所看到的,我的第一個欄已經消失
我在這裏的問題是,當我去到下一個頁面分頁工具,如果我要取消選擇一列,它顯示只有列標題,而不是它們的行,如下所示: 現在顯示了最初的隱藏列,但是我們已經有了空白。最後一列現在是空的,第一列是第二列的值。
這是我的數據表結構:
<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
謝謝爲你提供幫助。