2010-05-28 6 views
1

Je dois créer une table html dynamique en utilisant les valeurs configurées dans une table. J'utilise JSP avec l'architecture MVC.Table html dynamique

J'ai un numéro de ligne, un numéro de colonne et des champs de valeur dans le tableau. Si les valeurs sont 1,5 et HELLO en conséquence, alors je dois afficher ce HELLO dans la ligne 1 et la colonne 5.

La structure de la table est comme suit.

row column value 
1  5  value1 
2  8  value2 

Des idées?

+0

Quelle technologie Web dynamique utilisez-vous? php? aspic? asp.net (C#/vb)? –

+0

désolé .. J'utilise jsp – coder247

+2

Vous devriez avoir tagué cela aussi bien. Je l'ai ajouté. Avec les tags, vous atteignez le bon public. – BalusC

Répondre

5

Vous devez collecter les données dans un String[][] premier:

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

(noter que les indices de tableau sont basés sur zéro, vous voudrez peut-être Soustraire1 de row et col premier)

Ensuite, affichez-le en utilisant JSTLc:forEach (ou tout tag d'itération de données que votre objet "architecture MVC" utilise) dans 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

c'était facile .. merci :) – coder247

1

Extraire le numéro de colonne maximale:

SELECT MAX(column) AS max_column 
    FROM xxx 

d'extraction Ensuite, les données dans la rangée/colonne ordre:

SELECT * 
    FROM xxx 
ORDER BY row, column 

écrire ensuite une boucle externe qui itère indéfiniment, générant des lignes, et une boucle interne qui itère sur les numéros de colonne. Pour chaque cellule, vérifiez si l'enregistrement de résultat actuel correspond aux coordonnées. Si c'est le cas, affichez-le et récupérez l'enregistrement suivant.

Voici quelques pseudo-code:

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

Voulez-vous vos informations limitées (je vais modifier une fois que vous donnez plus de détails):

utilisation des espaces réservés:

pour chaque cellule insérer '{rol, col}'

Utilisez sql pour revenir:

id = {rolw,col} 
value = value 

pseudo SQL:

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

puis à travers chaque boucle simple disque, et remplacer les espaces réservés.

EG