To use a column toggler, simply add a commandButton to display picklist of column choices into the header of the table, as follows:
<p:commandButton icon="ui-icon-calculator" id="toggler" style="float: right;" type="button" value="Columns"/>
Next, add a columnToggler component to the table header, and specify the DataTable ID as the data source. In this case, the DataTable ID is "datalist":
<p:columnToggler datasource="datalist" trigger="toggler"/>
That's it! In the end, a button is added to the header of the table, which allows the user to specify which columns are displayed (Figure 1).
Figure 1: Column Toggler in Action
The full source listing for the DataTable in this example is as follows:
<p:dataTable id="datalist" paginator="true" rowkey="#{item.id}"
rows="10" rowsperpagetemplate="10,20,30,40,50"
selection="#{poolController.selected}" selectionmode="single"
value="#{poolController.items}" var="item" widgetvar="poolTable">
<p:ajax event="rowSelect"
update="createButton viewButton editButton deleteButton"/> <p:ajax event="rowUnselect"
update="createButton viewButton editButton deleteButton"/>
<f:facet name="header">
<p:commandButton icon="ui-icon-calculator" id="toggler"
style="float: right;" type="button" value="Columns"/>
<p:columnToggler datasource="datalist" trigger="toggler"/>
<div style="clear:both" />
</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListPoolTitle_id}"/>
</f:facet>
<h:outputText value="#{item.id}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListPoolTitle_style}"/>
</f:facet>
<h:outputText value="#{item.style}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListPoolTitle_shape}"/>
</f:facet>
<h:outputText value="#{item.shape}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListPoolTitle_length}"/>
</f:facet>
<h:outputText value="#{item.length}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListPoolTitle_width}"/>
</f:facet>
<h:outputText value="#{item.width}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListPoolTitle_radius}"/>
</f:facet>
<h:outputText value="#{item.radius}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListPoolTitle_gallons}"/>
</f:facet>
<h:outputText value="#{item.gallons}"/>
</p:column>
<f:facet name="footer">
<p:commandButton id="createButton" icon="ui-icon-plus"
value="#{bundle.Create}"
actionListener="#{poolController.prepareCreate}"
update=":PoolCreateForm"
oncomplete="PF('PoolCreateDialog').show()"/>
<p:commandButton id="viewButton" icon="ui-icon-search"
value="#{bundle.View}" update=":PoolViewForm"
oncomplete="PF('PoolViewDialog').show()"
disabled="#{empty poolController.selected}"/>
<p:commandButton id="editButton" icon="ui-icon-pencil"
value="#{bundle.Edit}" update=":PoolEditForm"
oncomplete="PF('PoolEditDialog').show()"
disabled="#{empty poolController.selected}"/>
<p:commandButton id="deleteButton" icon="ui-icon-trash"
value="#{bundle.Delete}"
actionListener="#{poolController.destroy}"
update=":growl,datalist"
disabled="#{empty poolController.selected}"/>
</f:facet>
</p:dataTable>
Happy coding with PrimeFaces 5.0! This example was generated using PrimeFaces 5.0 RC 2. The final release should be out soon!
No comments:
Post a Comment
Please leave a comment...