• JSF dataTable 添加列 动态创建数据表 列


    @Named
    @ViewScoped
    public class LiveRangeService implements Serializable {
        private List< Map<String, ColumnModel> > tableData;
        private List<ColumnModel> tableHeaderNames;
    
    
        public List<Map<String, ColumnModel>> getTableData() {
            return tableData;
        }
        public List<ColumnModel> getTableHeaderNames() {
            return tableHeaderNames;
        }
    
        public void PlayListMB() {
            tableData = new ArrayList< Map<String, ColumnModel> >();
    
            //Generate table header.
            tableHeaderNames = new ArrayList<ColumnModel>();
            for (int j = 0; j < 5; j++) {
                  tableHeaderNames.add(new ColumnModel("header "+j, " col:"+ String.valueOf(j+1)));
            }
    
            //Generate table data.
            for (int i = 0; i < 10; i++) {
                Map<String, ColumnModel> playlist = new HashMap<String, ColumnModel>();
                for (int j = 0; j < 5; j++) {
                    playlist.put(tableHeaderNames.get(j).key,new ColumnModel(tableHeaderNames.get(j).key,"row:" + String.valueOf(i+1) +" col:"+ String.valueOf(j+1)));
                }
                tableData.add(playlist);
            }
        }
    
        static public class ColumnModel implements Serializable {
    
            private String key;
            private String value;
    
            public ColumnModel(String key, String value) {
                this.key = key;
                this.value = value;
            }
    
            public String getKey() {
                return key;
            }
    
            public String getValue() {
                return value;
            }
        }
          <h:form>
    
                        <p:dataTable id="tbl" var="result"
                            value="#{liveRangeService.tableData}"
                            rendered="#{not empty liveRangeService.tableData}"
                            rowIndexVar="rowIndex"
                            >
    
                            <f:facet name="header">  header table </f:facet>
    
                            <p:column>
                                <f:facet name="header">
                                    <h:outputText value="序号" />
                                </f:facet>
                                <h:outputText value="#{rowIndex+1}" />
                            </p:column>
    
                            <p:columns value="#{liveRangeService.tableHeaderNames}"
                                var="mycolHeader" columnIndexVar="colIndex">
                                <f:facet name="header">
                                    <h:outputText value="#{mycolHeader.value}" />
    
                                </f:facet>
                                <h:outputText value="#{result[mycolHeader.key].value}" />
                                <br />
                            </p:columns>
    
                        </p:dataTable>
                    </h:form>
    使用primefaces实现。需要一个表header的list,里面存放列的标题。数据存放在map里面,key是标题,value是值即可。使用自定义的ColumnModel类,是为了把标题和数据用key对应起来,真正的标题内容可以设定。


    官方的示例:
    http://www.primefaces.org/showcase/ui/data/datatable/columns.xhtml

     ------------------------------------------------------------------------------------------------

    表头也可以直接写好,以后直接columns写入每列值就行。但是不写头,最后导出excel就没有头了。

                        <h:form>
    
                            <p:dataTable id="tbl" var="result"
                                value="#{liveRangeService.tableData}"
                                rendered="#{not empty liveRangeService.tableData}"
                                rowIndexVar="rowIndex"
                                paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown} {Exporters}"
                                paginator="true" style="margin-bottom:20px">
                                <f:facet name="{Exporters}">
                                    <h:commandButton id="exportcvs" value="导出表格"
                                        class="btn btn-default">
                                        <p:dataExporter type="xls" target="tbl"
                                            fileName="#{liveRangeService.filename}" />
                                    </h:commandButton>
                                </f:facet>
                                <f:facet name="header">  header table </f:facet>
    
    
                                <p:columnGroup type="header">
                                    <p:row>
                                        <p:column rowspan="2" headerText="Player" />
                                        <p:column colspan="2" headerText="users" />
                                    </p:row>
                                    <p:row>
                                        <p:column headerText="number" />
                                        <p:column headerText="percent" />
                                    </p:row>
                                </p:columnGroup>
    
    
                                <p:column>
                                    <h:outputText value="my name" />
                                </p:column>
    
    
    
                                <p:columns value="#{liveRangeService.tableHeaderNames}"
                                    var="mycolHeader" columnIndexVar="colIndex">
    
                                    <h:outputText value="#{result[mycolHeader.key].value}" />
                                    <br />
                                </p:columns>
    
                            </p:dataTable>
                        </h:form>
  • 相关阅读:
    Educational CF # 17 C 二分,字符串 D 最长路,dp
    HDU-1878 判断无向图欧拉回路,水
    LightOJ-1094 求树直径,水
    POJ-1144 Tarjan求割点,双连通模板题
    HDU-1269 Tarjan求强连通分量,模板题
    POJ-1094 拓扑排序
    POJ-1847 最短路裸题,Floyd, Bellman, Dijkstra, Spfa
    LightOJ-1005 组合数学,组合数水题
    CF #392(2) C 暴力模拟
    Android xUtils3使用
  • 原文地址:https://www.cnblogs.com/bigben0123/p/5484760.html
Copyright © 2020-2023  润新知