2010-05-28 66 views
1

我必須使用表中配置的值創建動態html表。我使用的是MVC架構的JSP。動態html表

我在表中有一個行號,列號和值字段。如果值分別爲1,5和HELLO,那麼我必須在第1行和第5列顯示這個HELLO。

表結構如下所示。

row column value 
1  5  value1 
2  8  value2 

任何想法?

+0

您使用的是什麼動態網頁技術? PHP的? ASP? asp.net(c#/ vb)? – 2010-05-28 09:37:43

+0

對不起..我正在使用jsp – coder247 2010-05-28 10:25:26

+2

您應該也標記了這一點。我添加了它。通過標籤,您可以吸引合適的觀衆。 – BalusC 2010-05-28 12:40:27

回答

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)

然後顯示它使用JSTLc:forEach(或任何數據迭代標籤您的「MVC架構」的東西使用)在JSP:

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

很簡單..謝謝:) – coder247 2010-05-31 10:03:42

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>" 
1

你打算在你的有限信息(一旦你透露更多的細節,我會編輯此):

使用佔位符:

每個細胞插入'{rol,col}'

使用sql返回:

id = {rolw,col} 
value = value 

僞SQL:

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

然後簡單地循環通過每個記錄,和替換佔位符。

EG