如何使用 columnToggler 仅导出选定的列
How to Export only selected columns using columnToggler
这里我在 primeFaces 中为我的 table 使用 dataExporter,它在 type="xls" 中成功导出,但问题是我还使用 columnToggler 来选择列,我想要仅针对那些要在 xls 文件中导出的列,这些列在 columnToggler 中是 checked/selected,例如:
这是我的 dataExporter 的代码,它针对我的 table (id = "tbl")。
<h:commandLink>
<img src="Resources/images/excel.png"/>
<p:dataExporter type="xls" target="tbl" fileName="dailyPoolReport_#{userAuthorization.user.loginName}" pageOnly="false" postProcessor="#{customizedDocumentsView.postProcessXLS}"/>
</h:commandLink>
这是我的 table 带有 columnToggler 的代码:
<p:dataTable id="tbl" var="car" value="#{dailyTrackingBean.trackReportData}" rowIndexVar="row" style="font-size:12px; margin-bottom:0;"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowKey="#{car.vehicle.regNo}"
paginator="true" rows="50" rowsPerPageTemplate="50,100,500,1000,5000">
<f:facet name="header" >
<h:outputText value="Vehicle Tracking Summary Report" style="font-size: 14px"/>
<p:commandButton id="toggler" type="button" value="Columns" style="float:right;height: 22px;font-size: 11px" icon="ui-icon-calculator" />
<p:columnToggler datasource="tbl" trigger="toggler" >
</p:columnToggler>
</f:facet>
有什么可能的解决方案吗?
要做到这一点,您可以使用类似这样的东西:
http://blog.primefaces.org/?p=3341
所以你可以有一个布尔值列表来表示属性 "visible" 的工具,并且可以对 "exportable"
使用相同的工具
例如:
<f:facet name="header">
List of Cars
<p:commandButton id="toggler" type="button" value="Columns" style="float:right" icon="ui-icon-calculator" />
<p:columnToggler datasource="cars" trigger="toggler">
<p:ajax event="toggle" listener="#{dtBasicView.onToggle}" />
</p:columnToggler>
</f:facet>
<p:column headerText="Id" visible="#{dtBasicView.list[0]}" exportable="#{dtBasicView.list[0]}">
<h:outputText value="#{car.id}" />
</p:column>
另一个加 - 如果你使用上面的也逃避:
* 问题(columntoggler 和分页)
* 问题(columntoggler 和 globalfilter)
希望对你有帮助:)
这里我在 primeFaces 中为我的 table 使用 dataExporter,它在 type="xls" 中成功导出,但问题是我还使用 columnToggler 来选择列,我想要仅针对那些要在 xls 文件中导出的列,这些列在 columnToggler 中是 checked/selected,例如:
这是我的 dataExporter 的代码,它针对我的 table (id = "tbl")。
<h:commandLink>
<img src="Resources/images/excel.png"/>
<p:dataExporter type="xls" target="tbl" fileName="dailyPoolReport_#{userAuthorization.user.loginName}" pageOnly="false" postProcessor="#{customizedDocumentsView.postProcessXLS}"/>
</h:commandLink>
这是我的 table 带有 columnToggler 的代码:
<p:dataTable id="tbl" var="car" value="#{dailyTrackingBean.trackReportData}" rowIndexVar="row" style="font-size:12px; margin-bottom:0;"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowKey="#{car.vehicle.regNo}"
paginator="true" rows="50" rowsPerPageTemplate="50,100,500,1000,5000">
<f:facet name="header" >
<h:outputText value="Vehicle Tracking Summary Report" style="font-size: 14px"/>
<p:commandButton id="toggler" type="button" value="Columns" style="float:right;height: 22px;font-size: 11px" icon="ui-icon-calculator" />
<p:columnToggler datasource="tbl" trigger="toggler" >
</p:columnToggler>
</f:facet>
有什么可能的解决方案吗?
要做到这一点,您可以使用类似这样的东西: http://blog.primefaces.org/?p=3341
所以你可以有一个布尔值列表来表示属性 "visible" 的工具,并且可以对 "exportable"
使用相同的工具例如:
<f:facet name="header">
List of Cars
<p:commandButton id="toggler" type="button" value="Columns" style="float:right" icon="ui-icon-calculator" />
<p:columnToggler datasource="cars" trigger="toggler">
<p:ajax event="toggle" listener="#{dtBasicView.onToggle}" />
</p:columnToggler>
</f:facet>
<p:column headerText="Id" visible="#{dtBasicView.list[0]}" exportable="#{dtBasicView.list[0]}">
<h:outputText value="#{car.id}" />
</p:column>
另一个加 - 如果你使用上面的也逃避:
* 问题(columntoggler 和分页)
* 问题(columntoggler 和 globalfilter)
希望对你有帮助:)