【问题标题】:How to dynamically create row and column of table in jsp pagejsp页面中如何动态创建表格的行列
【发布时间】:2013-10-04 16:58:54
【问题描述】:

我正在尝试将数据从数据库检索到表中。 但数据必须动态加载。

如何动态创建我不知道的行和列? 如果它只是要创建的行,那么我会很容易地做到这一点,但我也想在页面上动态创建列,这就是为什么我很困惑如何执行它?

我的 JSP 代码:

<table width="59%" border="1">
    <%
        MySql1 o = new MySql1();
        o.connect();
        ResultSet r;
        int counter=1;
        String q = "select * from category_master;";
        r = o.getdata(q);
        while(r.next())
        {
            %>
                <tr>
                     <td><%= r.getString(1)%></td>                                      
                </tr>
            <% 
        }
    %>
</table>

现在我在&lt;td&gt; 中显示第一列,但如果用户不知道要检索多少列,那该怎么办? 在select query 中,我使用了*,所以我对使用&lt;td&gt; 感到困惑。 我想要全部动态,因为假设我也将使用任何文本框或 url 动态传递表名。

这里MySql1 是一个类文件,它具有执行操作的方法。 connect()用于连接db,getdata()用于检索作为参数传递的查询数据,getdata()方法的返回类型为Resultset

所以这就是我想要所有动态的原因,但我不知道该怎么做。

【问题讨论】:

    标签: html database jsp select html-table


    【解决方案1】:

    试试这个代码:

    <table width="59%" border="1">
        <%
            MySql1 o = new MySql1();
            o.connect();
            ResultSet r;
            int counter=1;
            String q = "select * from category_master;";
            r = o.getdata(q);
            ResultSetMetaData metaData = r.getMetaData();
            while(r.next())
            {
                %>
                    <tr>
                     <%
                     for(int i = 1; i<=metaData.getColumnCount();i++)
                        { %>
                         <td>
                         <%= r.getString(i)%>
                         </td>
                    <% 
                        }
                    %>                   
                    </tr>
                <% 
            }
        %>
    </table>
    

    【讨论】:

    • 先生,如果我将编写查询以使用 select * 获取所有数据但我不想要一个字段,是否有可能。这种事情可能与否?假设它是用户详细信息表,我不想显示密码,除非我想要所有数据。
    • 先生,我没有完全理解它的含义,我是这个领域的初学者,所以这就是我面临问题的原因。你能告诉我怎么做吗?
    • 先生,我已经实现了 2 个机制。首先我从表中获取列名并显示为标题,然后在第二个中我从表名中获取数据但它在第二个实现中显示 ResultSetMetaData 声明中的错误,如果我直接传递表名而不是从其他页面获取的变量然后它在 ResultSetMetaData delaration 中显示错误...
    • 我已经用代码先生发布了我的问题。stackoverflow.com/questions/19095898/…
    【解决方案2】:

    我做了jsp页面这样测试

    这里是test.jsp

    <table width="59%" border="1">
        <thead>
        <tr>
            <td>Volume</td>
            <td>XmlTitle</td>
            <td>getYear</td>
        </tr>
        </thead>
        <tbody>
        <%
            Journal journal = Journal.findByCode("antipoda");
            List<Issue> normalIssues = journal.getIssuesOfType(IssueType.NORMAL);
            for (Issue issue : normalIssues) {
    
                out.print(String.format("<tr>" +
                                            "<td>%s</td>" +
                                            "<td>%s</td>" +
                                            "<td>%d</td>" +
                                        "</tr>",
                        issue.getVolume(),issue.getXmlTitle(),issue.getYear()));
            }
    
            out.flush();
        %>
        </tbody>
    </table>
    

    您可以将 scriptlet 更改为通过您要显示的模型进行迭代的代码

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多