2014-03-31 47 views
0

我試圖顯示這樣一個網格上我的數據庫內容:顯示產品在JSP作爲網格

grid example

我得到的所有產品在一個垂直colmun這樣的:

my products display

產品插入陣列「Arrayp」中,現在我可以diplay像提到的網格上的垂直表或水平表,但不是數據庫的內容,這是我的代碼,我將不勝感激幫助

<TABLE > 
<% 
while (cmp<=size) 
{ 
out.println("<tr>"); 
out.println("<td>"); 

out.println("<p><img src=\"images/" + Arrayp.get(cmi) + " \" width=\"100\" height=\"100\" /></p>"); 
out.println("<p> categorie " + Arrayp.get(cmp) + "</p>"); 
out.println("<p> prix " + Arrayp.get(cmpri) + "</p>"); 
out.println("<p>quantité disponible " + Arrayp.get(cmpqt) + "</p>"); 
out.println("<form name='f' action='panier' method='post'>"); 
out.println("<input type='hidden' value= "+Arrayp.get(cmbref) +" name='ref' >"); 
out.println("<p>quantité desirée</p>"); 
out.println("<p><input type='text' name='nbr' ></p>"); 
out.println("<input type='submit' value='ajouter au panier' />") ; 
out.println ("</form>"); 




cmp=cmp+8; 
cmi=cmi+8; 
cmpqt=cmpqt+8; 
cmbref=cmbref+8; 
out.println("<p></p>"); 
out.println("<p></p>"); 



out.println("</td>"); 
out.println("<tr>"); 
%> 
</TABLE> 
+0

爲什麼你硬編碼html的使用java代碼?使用[JSTL(http://www.oracle.com/technetwork/java/index-jsp-135995.html) – Rembo

+0

是的,我知道,但這不是問題,問題是,我不能讓網格顯示就像在圖片上提到的那樣 – user2503613

+0

你得到了什麼添加你的頁面的圖像到你的問題。 – Rembo

回答

0

使用counteritems當4項越過添加新<tr>標籤。您現在在哪裏爲每個item添加<tr>標籤。下面我舉例說明,你可以根據需要進行修改。

像:

<html> 
<head> 
tr { 
display: block; 
border: 1px solid blue; 
} 
td{ 
    border: 1px solid red; 
    padding: 8px; 
} 
</style> 
</head> 
<body> 
    <% 
    int start = 0; 
    int elementsLen = 10; 
    int counter = 1; 
    int noOfItemsInRow = 4; //set number of td you want in tr 
    StringBuilder sb = new StringBuilder(); 
    noOfItemsInRow++; 

    //start table 
    out.println("<table>"); 
    while(start<=elementsLen){ 
     sb.append("<td>"); 
     sb.append(start); 
     sb.append("</td>"); 

     //check if noOfElemntsInRow elements is reached keep it in a new row 
     if(++counter==noOfItemsInRow){ 
      out.println("<tr>"); 
      out.println(sb.toString()); 
      out.println("</tr>"); 
      sb.setLength(0); 
      counter = 1; 
     } 
     start++; 
    } 
    //print remaining td elements in a new row 
    if(sb.length()>1){ 
     out.println("<tr>"); 
     out.println(sb.toString()); 
     out.println("</tr>"); 
    } 
    //close table 
    out.println("</table>"); 
    %> 
</body> 
</html> 

輸出:

output format

注:這是不是在JSP中使用小腳本是一個好主意,而不是你應該使用JSTL。

0

我現在正在工作,我曾嘗試過,如果它沒有正常工作。 奇怪的是我今天試了一下沒有最終關閉TR我的意思是不帶/ TR和它的作品,我得到了一個乾淨的網格:d 更新:這個問題是通過關閉TR while循環之外,THX所有 解決這裏是工作代碼

int c =0; 
     int numberofcolumns=4; 
     %> 

    <TABLE> 

    <% 
    while (cmp<=size) 
    { 
    c++; 

    if (c==numberofcolumns){ 
     numberofcolumns=numberofcolumns+3; 
    out.println("<tr>"); 
    } 
    out.println("<td>"); 

    out.println("<p><img src=\"images/" + Arrayp.get(cmi) + " \" width=\"100\" height=\"100\" /></p>"); 
    out.println("<p> categorie " + Arrayp.get(cmp) + "</p>"); 
    out.println("<p> prix " + Arrayp.get(cmpri) + "</p>"); 
    out.println("<p>quantité disponible " + Arrayp.get(cmpqt) + "</p>"); 
    out.println("<form name='f' action='panier' method='post'>"); 
    out.println("<input type='hidden' value= "+Arrayp.get(cmbref) +" name='ref' >"); 
    out.println("<p>quantité desirée</p>"); 
    out.println("<p><input type='text' name='nbr' ></p>"); 
    out.println("<input type='submit' value='ajouter au panier' />") ; 
    out.println ("</form>"); 


    out.println("<td>"); 

    cmp=cmp+8; 
    cmi=cmi+8; 
    cmpqt=cmpqt+8; 
    cmbref=cmbref+8; 
    out.println("<p></p>"); 
    out.println("<p></p>"); 





    }// 
    out.println("</tr>"); 
    %> 
    </TABLE>