动态html表

时间:2010-05-28 09:35:41

标签: html jsp dynamic html-table

我将使用表中配置的值创建动态html表。我正在使用JSP和MVC架构。

我在表格中有行号,列号和值字段。如果值相应地为1.5和HELLO,那么我将在第1行和第5列中显示此HELLO。

表结构如下所示。

row column   value
 1     5     value1
 2     8     value2  

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

您需要先在String[][]收集数据:

int rows = getMaxRowNumberFromDB();
int cols = getMaxColNumberFromDB();
String[][] values = new String[rows][cols];

// ...

while (resultSet.next()) {
    int row = resultSet.getInt("row");
    int col = resultSet.getInt("col");
    String value = resultSet.getString("value");
    values[row][col] = value;
}

(请注意,数组索引基于零,您可能希望先从rowcol减去1)

然后在JSP中使用JSTL c:forEach(或“MVC架构”正在使用的任何数据迭代标记)显示它:

<table>
    <c:forEach items="${values}" var="row">
        <tr>
            <c:forEach items="${row}" var="value">
                <td>${value}</td>
            </c:forEach>
        </tr>
    </c:forEach>
</table>

答案 1 :(得分:1)

获取最大列数:

SELECT MAX(column) AS max_column
  FROM xxx

然后按行/列顺序获取数据:

SELECT *
  FROM xxx
 ORDER BY row, column

然后编写一个无限循环的外循环,生成行,以及一个迭代列号的内循环。对于每个单元格,检查当前结果记录是否与坐标匹配。如果是,输出并获取下一条记录。

这是一些伪代码:

max_column = SELECT MAX(column) ...
data = SELECT * ...
if data.eof(): exit
output "<table>"
for row = 1..∞:
    output "<tr>"
    for col = 1..max_column:
        output "<td>"
        if data["row"] = row and data["column"] = col:
            output data["value"]
            data.next()
            if data.eof(): exit
        output "</td>"
    output "</tr>"
output "</table>"

答案 2 :(得分:1)

继续您的有限信息(一旦您提供更多详细信息,我将对此进行编辑):

使用占位符:

每个单元格插入'{rol,col}'

使用sql返回:

 id = {rolw,col}
 value = value

伪sql:

select  '{'+str(row)+','+str(col)+'}' as [id]
       ,value
from    table

然后简单地遍历每条记录,并替换占位符。

<强> EG