2010-05-28 10 views
1

Я должен создать динамическую таблицу html, используя значения, настроенные в таблице. Я использую JSP с архитектурой MVC.Динамический html-стол

У меня есть номер строки, столбца и поля значений в таблице. Если значения равны 1,5 и HELLO соответственно, тогда я должен отображать этот HELLO в строке 1 и столбце 5.

Структура таблицы выглядит следующим образом.

row column value 
1  5  value1 
2  8  value2 

Любые идеи?

+0

Какую динамическую веб-технологию вы используете? PHP? жерех? asp.net (C#/vb)? –

+0

Извините .. Я использую jsp – coder247

+2

Вы также должны были отметить это. Я добавил его. С тегами вы попадаете в нужную аудиторию. – BalusC

ответ

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; 
} 

(обратите внимание, что индексы массивов начинаются с нуля, вы можете вычитать 1 из row и col первого)

Затем отобразите его с помощью 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

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

Отправляясь на вашей ограниченной информации (я буду редактировать этот раз вы дать более подробную информацию):

использование заполнителей:

для каждой ячейки вставить '{рол, цв}'

Использование SQL для возврата:

id = {rolw,col} 
value = value 

псевдо SQL:

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

затем просто цикл по каждой записи, и заменить заполнители.

EG

Смежные вопросы