首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将jsp中的产品显示为网格。

将jsp中的产品显示为网格。
EN

Stack Overflow用户
提问于 2014-03-31 18:47:24
回答 2查看 1.8K关注 0票数 0

我正在尝试在网格上显示我的数据库内容,如下所示:

grid example

我将所有的产品放在一个垂直的列上,如下所示:

my products display

产品被插入到数组“Arrayp”中,现在我可以在垂直表或水平表上显示数据库内容,但不能像前面提到的那样在网格上显示,这是我的代码,我将不胜感激

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

发布于 2014-03-31 23:23:18

使用counter计算items,当4个项目交叉时,添加一个新的<tr>标签。现在为每个item添加<tr>标签。下面我给出了一个例子,你可以根据需要修改。

像这样:

代码语言:javascript
复制
<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>

输出:

注意:在jsp中使用scriptlet不是一个好主意,相反,您应该使用jstl。

票数 0
EN

Stack Overflow用户

发布于 2014-04-01 14:38:53

我已经让它工作了,我以前试过if,但它不能正常工作。奇怪的是,我今天在没有关闭tr的情况下尝试了一下,我的意思是在最后没有/tr的情况下,它可以工作,并且我得到了一个干净的网格:D更新:这个问题通过关闭while循环之外的TR得到了解决,这是工作代码

代码语言:javascript
复制
 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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22759610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档