首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> 核心技术 >> 网络编程 >> 正文

JSF动态生成固定表头和行标的DataTable

MyBean.java
package mypackage;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.Application;
import javax.faces.component.UIColumn;
import javax.faces.component.UIOutput;
import javax.faces.component.html.HtmlCommandLink;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.context.FacesContext;
import javax.faces.el.MethodBinding;
import javax.faces.el.ValueBinding;
import javax.faces.event.ActionEvent;

public class MyBean {
    
    
private List<List<String>> myList;
    
    
private List<List<String>> myHeader;
    
    
private List<List<Integer>> myNum;
    
    
private HtmlDataTable dynamicDataTable;
    
    
private HtmlDataTable headerDataTable;
    
    
private HtmlDataTable numDataTable;
    
    
private static int tempWidth = 30;

    
// Load Data from DataBase to Every DataTable --------------------------------
    public void loadMyList() throws Exception {

        myList 
= new ArrayList<List<String>>();
        
        
int row = 25;
        
        
while(row > 0) {  
            
            
int column = 25;
            
            String str 
= "o";
            
            List 
<String> tmpvector = new ArrayList <String> ();
            
            
while(column > 0) {
                
                tmpvector.add(str);
                
                column
--;
            }
            row
--;
            
            myList.add(tmpvector);
        }
    }
    
    
public void loadMyHeader() throws Exception {

        myHeader 
= new ArrayList<List<String>>();

        String str 
= "*****";
        
        
int column = 25;
        
        List 
<String> tmpvector = new ArrayList <String> ();
        
        
while(column > 0) {

            tmpvector.add(str);
            
            column
--;
        }
        myHeader.add(tmpvector);
    }
    
    
public void loadMyNum() throws Exception {

        myNum 
= new ArrayList<List<Integer>>();
        
        
int row = 0;
        
        
while(row < 25) {  
                
            List 
<Integer> tmpvector = new ArrayList <Integer> ();

            tmpvector.add(row);
            
            myNum.add(tmpvector);
            
            row
++;
        }
    }
    
    
//initialize Every DataTable to the Front-------------------------------------
    public void populateDynamicDataTable() {

        
if (myList != null && myList.size() > 0) {
            
            dynamicDataTable 
= new HtmlDataTable();
            
            
int columns = ((List) myList.get(0)).size();

            System.out.println(
"DisplayCloumn:   " + columns);//
            
            
for (int i = 0; i < columns; i++) {             

                ValueBinding myItem 
= 
            FacesContext.getCurrentInstance().getApplication().createValueBinding(
"#{myItem[" + i + "]}");              
                
                UIColumn column 
= new UIColumn();
                
                HtmlOutputText outputText 
= new HtmlOutputText();
                
                outputText.setValueBinding(
"value", myItem);

                outputText.setStyle(
"width: " + tempWidth + "");
                
                column.getChildren().add(outputText);
                
              column.setId(
"col_" + i);  //You should set ID of every component which you create in the Backing-Bean .
                
                dynamicDataTable.getChildren().add(column);
            }
        }
    }
    
    
public void populateHeaderDataTable() {
        
        
if (myHeader != null && myHeader.size() > 0) {
            
            headerDataTable 
= new HtmlDataTable();
            
            
int columns = ((List) myHeader.get(0)).size();    
            
            FacesContext facesContext 
= FacesContext.getCurrentInstance();
            
            Application application 
= facesContext.getApplication();
            
            
for (int i = 0; i < columns; i++) {
            
                HtmlCommandLink commandLink 
=
                
 (HtmlCommandLink) application.createComponent(HtmlCommandLink.COMPONENT_TYPE);
                
                String valueBindingExpression 
= "#{myHeader[" + i + "]}";                    
                ValueBinding valueBinding 
= application.createValueBinding(valueBindingExpression);                 
                commandLink.setValueBinding(
"value", valueBinding);        
                
   commandLink.setId(
"head_comankLink_" + i);//The most important!!! If you dont put it nothing is gonna happen.
 

                
                commandLink.setStyle(
"color: blue");
                
                commandLink.setStyle(
"width: " + tempWidth + "");        
                
                commandLink.getAttributes();

                Class[] params 
= { ActionEvent.class };                
                MethodBinding actionListener 
= 
                  application.createMethodBinding(
"#{myBean.setSelectedDocumentId}", params);                
                commandLink.setActionListener(actionListener);

                commandLink.setImmediate(
true); 

                UIColumn column 
= new UIColumn();                
                column.getChildren().add(commandLink);
                column.setId(
"head_" + i);

                headerDataTable.getChildren().add(column);       
            }
        }
    }
    
    
public void populateNumDataTable() {
        
        
if (myNum != null && myNum.size() > 0) {
            
            numDataTable 
= new HtmlDataTable();

            UIOutput output 
= new UIOutput();
            
            ValueBinding myItem 
=
             
 FacesContext.getCurrentInstance().getApplication().createValueBinding("#{myNum[0]}");
            
            output.setValueBinding(
"value", myItem);
            
            
// Set column.
            UIColumn column = new UIColumn();
            column.getChildren().add(output);
            column.setId(
"num");
            
            numDataTable.getChildren().add(column);
        }
    }
   
    
//Test Actions and ActionListeners--------------------------------------------

    
public void setSelectedDocumentId(ActionEvent event) throws Exception 
    {

    }

    
// Getters -------------------------------------------------------------------
    public HtmlDataTable getDynamicDataTable() throws Exception {
        
if (dynamicDataTable == null) {
            
            loadMyList(); 
// Reload to get most recent data.
            
            populateDynamicDataTable();
        }
        
return dynamicDataTable;
    }
    
    
public HtmlDataTable getHeaderDataTable() throws Exception {
        
if (headerDataTable == null) {
            
            loadMyHeader(); 
// Reload to get most recent data.
            
            populateHeaderDataTable();
        }
        
return headerDataTable;
    }

    
public HtmlDataTable getNumDataTable() throws Exception {
        
if (numDataTable == null) {
            
            loadMyNum(); 
// Reload to get most recent data.
            
            populateNumDataTable();
        }
        
return numDataTable;
    }
    
    
public List<List<Integer>> getMyNum() {
        
return myNum;
    }
    
    
public List<List<String>> getMyHeader() {
        
return myHeader;
    }
    
    
public List<List<String>> getMyList() {
        
return myList;
    }

    
// Setters -------------------------------------------------------------------
    public void setDynamicDataTable(HtmlDataTable dynamicDataTable) {
        
this.dynamicDataTable = dynamicDataTable;
    }

    
public void setHeaderDataTable(HtmlDataTable headerDataTable) {
        
this.headerDataTable = headerDataTable;
    }

    
public void setMyHeader(List<List<String>> myHeader) {
        
this.myHeader = myHeader;
    }
    
    
public void setNumDataTable(HtmlDataTable numDataTable) {
        
this.numDataTable = numDataTable;
    }
    
    
public void setMyNum(List<List<Integer>> myNum) {
        
this.myNum = myNum;
    }

    
public void setMyList(List<List<String>> myList) {
        
this.myList = myList;
    }
}

 

上一页  [1] [2] [3] 下一页

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航