构建具有不同列数的html表

Posted

技术标签:

【中文标题】构建具有不同列数的html表【英文标题】:Building html table with varying number of columns 【发布时间】:2013-03-02 11:36:46 【问题描述】:

我正在使用 Java 和 icefaces,我需要构建一个每次都有不同列数的表。

到目前为止,我发现的最好的例子是 the icefaces website

我试图让列数是动态的,但我不知道如何获取 html 页面中的单元格值。 这是我的代码:

我的豆子:

public class DynamicColumnsBean implements Serializable 

int randomRows ;
int randomCol ;

List<Task> data;   // rows data
List<ColumnModel> columns ;


public DynamicColumnsBean() 
    super();
    Random rn = new Random();
    randomRows = rn.nextInt() % 40;
    randomCol = rn.nextInt() % 30;

    if(randomRows==0)   randomRows=10;
    if(randomCol==0)    randomCol=7;
    if(randomRows<0)    randomRows*=-1;
    if(randomCol<0)     randomCol*=-1;

     columns = new ArrayList<ColumnModel>();
     for (int i=0 ; i< randomCol ; i++ )
    
         columns.add(new ColumnModel(i, "ID "+ i +" "));
    

    data = new ArrayList<Task>() ; //row objects

    for (int i=0 ; i< randomRows ; i++ )
    
        List<String> obj = new ArrayList<String>() ;
        for (int j=0 ; j< randomCol ; j++ )
        
            obj.add("row "+i +" col "+j);
        
        Task temp = new Task(obj);
        data.add(temp);
    





    public List<Task> getData() 
               return data;        
    public void setData(ArrayList<Task> data) 
               this.data = data;       
    public List<ColumnModel> getColumns() 
        return columns;     
    public void setColumns(ArrayList<ColumnModel> columns) 
        this.columns = columns;     



public class Task 

List<String> obj ;


 public Task() 
        super();

     

public Task(List<String> obj) 
    super();
    obj = new ArrayList<String>();
    this.obj = obj;


public List<String> getObj() 
    return obj; 

public void setObj(List<String> obj) 
    this.obj = obj; 


public class ColumnModel 
int value; // represents sortBy / filterBy as one field
String headerText;

public ColumnModel(int i, String headerText) 
    this.value = i;
    this.headerText = headerText;


public int getValue() 
    return value;    
public void setValue(int value) 
    this.value = value;    
public String getHeaderText() 
    return headerText;    
public void setHeaderText(String headerText) 
    this.headerText = headerText;    

<ace:dataTable value="#dynBean2.data" var="row" scrollable="true"
                   paginator="true"   rows="5" >
            <c:forEach items="#dynBean2.columns" var="col">
                <ace:column headerText="#col.headerText" style="width: 40px" >

                    <ice:outputText value=" #row['obj'[col.value]]"></ice:outputText>

                </ace:column>
            </c:forEach>
        </ace:dataTable>

我的问题是:

ice:outputText value=" #row['obj'[col.value]]"

我需要的值是:获取索引 i 中的数据 --> 获取索引 [col.value] 中的 obj 中的值。

【问题讨论】:

【参考方案1】:

你可以试试 varStatus:

<c:forEach items="#dynBean2.columns" var="col" varStatus="colStatus">
  <ace:column headerText="#col.headerText" style="width: 40px" >
    <ice:outputText value=" #row.obj[colStatus.index]"></ice:outputText>
  </ace:column>
</c:forEach>

【讨论】:

以上是关于构建具有不同列数的html表的主要内容,如果未能解决你的问题,请参考以下文章

合并具有不同列数的表

具有不同列数的数据表

组合具有不同列数的 Spark 数据帧

pandas - 追加具有不同列数的新行

如何在 R 中读取具有不同列数的 CSV 文件

Postgresql从具有不同列数的2个表中选择多条记录