1. @Named
  2. @ViewScoped
  3. public class LiveRangeService implements Serializable {
  4. private List< Map<String, ColumnModel> > tableData;
  5. private List<ColumnModel> tableHeaderNames;
  6.  
  7. public List<Map<String, ColumnModel>> getTableData() {
  8. return tableData;
  9. }
  10. public List<ColumnModel> getTableHeaderNames() {
  11. return tableHeaderNames;
  12. }
  13.  
  14. public void PlayListMB() {
  15. tableData = new ArrayList< Map<String, ColumnModel> >();
  16.  
  17. //Generate table header.
  18. tableHeaderNames = new ArrayList<ColumnModel>();
  19. for (int j = 0; j < 5; j++) {
  20. tableHeaderNames.add(new ColumnModel("header "+j, " col:"+ String.valueOf(j+1)));
  21. }
  22.  
  23. //Generate table data.
  24. for (int i = 0; i < 10; i++) {
  25. Map<String, ColumnModel> playlist = new HashMap<String, ColumnModel>();
  26. for (int j = 0; j < 5; j++) {
  27. playlist.put(tableHeaderNames.get(j).key,new ColumnModel(tableHeaderNames.get(j).key,"row:" + String.valueOf(i+1) +" col:"+ String.valueOf(j+1)));
  28. }
  29. tableData.add(playlist);
  30. }
  31. }
  32.  
  33. static public class ColumnModel implements Serializable {
  34.  
  35. private String key;
  36. private String value;
  37.  
  38. public ColumnModel(String key, String value) {
  39. this.key = key;
  40. this.value = value;
  41. }
  42.  
  43. public String getKey() {
  44. return key;
  45. }
  46.  
  47. public String getValue() {
  48. return value;
  49. }
  50. }
  1. <h:form>
  2.  
  3. <p:dataTable id="tbl" var="result"
  4. value="#{liveRangeService.tableData}"
  5. rendered="#{not empty liveRangeService.tableData}"
  6. rowIndexVar="rowIndex"
  7. >
  8.  
  9. <f:facet name="header"> header table </f:facet>
  10.  
  11. <p:column>
  12. <f:facet name="header">
  13. <h:outputText value="序号" />
  14. </f:facet>
  15. <h:outputText value="#{rowIndex+1}" />
  16. </p:column>
  17.  
  18. <p:columns value="#{liveRangeService.tableHeaderNames}"
  19. var="mycolHeader" columnIndexVar="colIndex">
  20. <f:facet name="header">
  21. <h:outputText value="#{mycolHeader.value}" />
  22.  
  23. </f:facet>
  24. <h:outputText value="#{result[mycolHeader.key].value}" />
  25. <br />
  26. </p:columns>
  27.  
  28. </p:dataTable>
  29. </h:form>
  1. 使用primefaces实现。需要一个表headerlist,里面存放列的标题。数据存放在map里面,key是标题,value是值即可。使用自定义的ColumnModel类,是为了把标题和数据用key对应起来,真正的标题内容可以设定。
  1.  
  2. 官方的示例:
    http://www.primefaces.org/showcase/ui/data/datatable/columns.xhtml

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

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

  1. <h:form>
  2.  
  3. <p:dataTable id="tbl" var="result"
  4. value="#{liveRangeService.tableData}"
  5. rendered="#{not empty liveRangeService.tableData}"
  6. rowIndexVar="rowIndex"
  7. paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown} {Exporters}"
  8. paginator="true" style="margin-bottom:20px">
  9. <f:facet name="{Exporters}">
  10. <h:commandButton id="exportcvs" value="导出表格"
  11. class="btn btn-default">
  12. <p:dataExporter type="xls" target="tbl"
  13. fileName="#{liveRangeService.filename}" />
  14. </h:commandButton>
  15. </f:facet>
  16. <f:facet name="header"> header table </f:facet>
  17.  
  18. <p:columnGroup type="header">
  19. <p:row>
  20. <p:column rowspan="2" headerText="Player" />
  21. <p:column colspan="2" headerText="users" />
  22. </p:row>
  23. <p:row>
  24. <p:column headerText="number" />
  25. <p:column headerText="percent" />
  26. </p:row>
  27. </p:columnGroup>
  28.  
  29. <p:column>
  30. <h:outputText value="my name" />
  31. </p:column>
  32.  
  33. <p:columns value="#{liveRangeService.tableHeaderNames}"
  34. var="mycolHeader" columnIndexVar="colIndex">
  35.  
  36. <h:outputText value="#{result[mycolHeader.key].value}" />
  37. <br />
  38. </p:columns>
  39.  
  40. </p:dataTable>
  41. </h:form>

JSF dataTable 添加列 动态创建数据表 列的更多相关文章

  1. laravel在控制器中动态创建数据表

    Schema::connection('usertable')->create('test', function ($table) { $table->increments('id'); ...

  2. 022. ASP.NET为DataSet中数据集添加关系及动态创建主子表和添加主子表关系

    protected void Page_Load(object sender, EventArgs e) { string connectionString = "server=.;data ...

  3. SqlServer创建数据表描述及列描述信息

    SqlServer创建数据表描述及列描述信息 Intro Q: 为什么要创建描述信息? A: 鼠标悬停在对应表和列上时,会出现描述信息,可以提高工作的效率,借助工具我们根据数据表可以生成Model,可 ...

  4. MySQL学习笔记_2_MySQL创建数据表(上)

    MySQL创建数据表(上) 一.创建数据表的SQL语句模型[弱类型] CREATETABLE [IF NOT EXISTS] 表名称( 字段名1列的类型[属性][索引], 字段名2 列的类型[属性][ ...

  5. MySQL创建数据表

    *  创建数据表 * *       *      一.什么是数据表 * *           * *      二.创建数据表的SQL语句模型 * *          DDL * *       ...

  6. laravel使用Schema创建数据表

    1.简介 迁移就像数据库的版本控制,允许团队简单轻松的编辑并共享应用的数据库表结构,迁移通常和Laravel的schema构建器结对从而可以很容易地构建应用的数据库表结构.如果你曾经告知小组成员需要手 ...

  7. XamarinSQLite教程创建数据表

    XamarinSQLite教程创建数据表 新创建的数据库没有任何表.开发者需要手动添加数据表,并添加测试所需的数据. 1.创建数据表 为了存储数据,开发者需要添加自己的表,并设计表的结构.操作步骤如下 ...

  8. MySQL创建数据表并建立主外键关系

    为mysql数据表建立主外键需要注意以下几点: 需要建立主外键关系的两个表的存储引擎必须是InnoDB. 外键列和参照列必须具有相似的数据类型,即可以隐式转换的数据类型. 外键列和参照列必须创建索引, ...

  9. MySQL在创建数据表的时候创建索引

    转载:http://www.baike369.com/content/?id=5478 MySQL在创建数据表的时候创建索引 在MySQL中创建表的时候,可以直接创建索引.基本的语法格式如下: CRE ...

随机推荐

  1. ASP.NET的编译原理

    http://www.cnblogs.com/mdy2001212/archive/2008/01/31/1060345.html

  2. 20140207 - Java and Mac OS X Retina

    在Mac下使用文件管理工具类似Total Commander的muCommander,muCommander的编写语言是Java,打开后发现Java不兼容Mac Retina. muCommander ...

  3. floyd原理以及求最小环

    floyd这个东西学会了好久了,但是原理总是忘记,或者说没有真正的明白,这里在说一下. 我们要求的是任意的 i,j 之间的最短路径,用动态规划的思想来解决就是f[i,j,k]表示i到j中间节点不超过k ...

  4. MATLAB中白噪声的WGN和AWGN函数的使用

    MATLAB中白噪声的WGN和AWGN函数的使用如下: MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一 信号 ...

  5. 13-mv 命令总结

  6. rabbitmq技术

    Rabbitmq 初识rabbitmq RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现.如果不熟悉AMQP,直接看Rabbi ...

  7. linux基础-附件1 linux系统启动流程

    附件1 linux系统启动流程 最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主 ...

  8. android修改系统时区

     动态注册广播接收器必须有实例存在 静态不要实例存在   设置系统时区: AlarmManager mAlarmManager = (AlarmManager)getSystemService(Con ...

  9. Android studio 提高导入项目的速度

    最近在下载了一些开源的项目在学习,在导入as时,速度要好慢,如项目大点,就更慢了,实在是坑啊! 那有没有方法能导入时间快点呀! 分析发现,as在导入项目是首先是读 来自为知笔记(Wiz)

  10. Java对象的访问

    对象访问在Java语言中无处不在,即使最简单的访问也涉及Java栈.Java堆.方法区这三个重要的内存区域中. 例:Object obj = new Object(); Object obj     ...