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>
JSF dataTable 添加列 动态创建数据表 列的更多相关文章
- laravel在控制器中动态创建数据表
		
Schema::connection('usertable')->create('test', function ($table) { $table->increments('id'); ...
 - 022. ASP.NET为DataSet中数据集添加关系及动态创建主子表和添加主子表关系
		
protected void Page_Load(object sender, EventArgs e) { string connectionString = "server=.;data ...
 - SqlServer创建数据表描述及列描述信息
		
SqlServer创建数据表描述及列描述信息 Intro Q: 为什么要创建描述信息? A: 鼠标悬停在对应表和列上时,会出现描述信息,可以提高工作的效率,借助工具我们根据数据表可以生成Model,可 ...
 - MySQL学习笔记_2_MySQL创建数据表(上)
		
MySQL创建数据表(上) 一.创建数据表的SQL语句模型[弱类型] CREATETABLE [IF NOT EXISTS] 表名称( 字段名1列的类型[属性][索引], 字段名2 列的类型[属性][ ...
 - MySQL创建数据表
		
* 创建数据表 * * * 一.什么是数据表 * * * * 二.创建数据表的SQL语句模型 * * DDL * * ...
 - laravel使用Schema创建数据表
		
1.简介 迁移就像数据库的版本控制,允许团队简单轻松的编辑并共享应用的数据库表结构,迁移通常和Laravel的schema构建器结对从而可以很容易地构建应用的数据库表结构.如果你曾经告知小组成员需要手 ...
 - XamarinSQLite教程创建数据表
		
XamarinSQLite教程创建数据表 新创建的数据库没有任何表.开发者需要手动添加数据表,并添加测试所需的数据. 1.创建数据表 为了存储数据,开发者需要添加自己的表,并设计表的结构.操作步骤如下 ...
 - MySQL创建数据表并建立主外键关系
		
为mysql数据表建立主外键需要注意以下几点: 需要建立主外键关系的两个表的存储引擎必须是InnoDB. 外键列和参照列必须具有相似的数据类型,即可以隐式转换的数据类型. 外键列和参照列必须创建索引, ...
 - MySQL在创建数据表的时候创建索引
		
转载:http://www.baike369.com/content/?id=5478 MySQL在创建数据表的时候创建索引 在MySQL中创建表的时候,可以直接创建索引.基本的语法格式如下: CRE ...
 
随机推荐
- c8051f320学习,单片机不外乎时钟、IO、串口、USB等外设用法
			
时钟 IO(输入.输出,如何配置) IO 数字和模拟资源可以通过25个I/O 引脚(C805 1F3 2 0 ),每个端口引脚都可以被定义为 通用I/O(GPIO)或 0 模拟输入 所有端口I ...
 - 与TCP/IP协议的初次见面(一)
			
引言 最近LZ有了一点时间,于是便拿出TCP/IP的书本开始啃.开始的时候,啃起来枯燥无味,现在好不容易有点开窍,于是赶忙记录一下,生怕自己一转眼就给忘了.不过计算机系统原理就有点可惜了,最近一直没时 ...
 - xml序列化及反序列化.net对象
			
序列化一个类通常添加[XmlRoot("根节点名字")] 找到要序列化的内容 对要序列化的类添加 [Serializable]属性用于序列化 对于要序列化的字段添加 [XmlEl ...
 - [BZOJ1564][NOI2009]二叉查找树(区间DP)
			
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1564 分析: 首先因为每个点的数据值不变,所以无论树的形态如何变,树的中序遍历肯定不变 ...
 - 清空KindEditor富文本编辑器里面的内容方法
			
//清空KindEditorKindEditor.instances[0].html(""); 0表示第一个KindEditor编辑器对象 详情见链接:http://www.new ...
 - 拼图游戏(js,C#,java三种语言)
			
<html> <head> <meta charset="utf-8"> <style type="text/css" ...
 - Python基础-字符串格式化_百分号方式_format方式
			
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
 - freemarker  分页取值
			
<#if pagination??&&pagination.list??> <#list pagination.list as video> <td al ...
 - Js-加密
			
1.base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset ...
 - java 附件上传时后台验证上传文件的合法性
			
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...