数据库里查出这样的数据
BLNO   RREF
V1     C_01
V1     C_02
V2     C_01
V2     C_03
V3     C_02要求在jsp上显示成这样:
V1
  C_01
  C_02
V2
  C_01
  C_03
V3
  C_02
请各位高手帮帮忙了。  

解决方案 »

  1.   

    一般都是边查边递归的吧
    如果按你的要求,是数据查完了,排列定型了,通过页面操作排版。
    那就用JS了。给你个思路,这方法可以避免目录树的递归步骤,对小型数据很实用。
    <div class="tree">
    <%
    // list=...
    String name="",parname="";
    for(int i=0,i<list.size();i++){
    //name=...;parname=...;
    %>
    <div id="node_<%= name%>">
    <a name="node_value"><%= name%></a>
    </div>
    <%}for(int i=0,i<list.size();i++){
    //name=...;parname=...;
    %>
    <script type="text/javascript">
    $("#node_<%= parname%>").append($("#node_<%= name%>"));
    </script>
    <%}%>
    <div>
    大概的形式是这样的,如果数据的顺序不杂乱,这2个FOR循环可以合并的。
    至于树的样式得自己设计这个DIV了
      

  2.   

    这就是啊,直接写在JSP里就可以。
    里面的这行代码 $("#node_<%= parname%>").append($("#node_<%= name%>"));
    不用JQUERY,就是这3行的意思
    var par=document.getElementById("#node_<%= parname%>");
    var child=document.getElementById("#node_<%= name%>");
    par.appendChild(child);
      

  3.   

    这么简单的小问题,懒得写代码。
    你就把
    BLNO  RREF 
    V1    C_01 
    V1    C_02 
    V2    C_01 
    V2    C_03 
    V3    C_02 
    查出来时按 BLNO 排序,然后输出,第行输出时这样
    设置一个临时变量,存储上一个BLNO节点。以下是伪代码:
    for(String tmp = ""; rs.this line has value; )
    {
      if (tmp.equals(rs.getString("BLNO")))
      {
        out.println("  " + rs.getString("RREF"))
        rs.next();
      }
      else
      {
        tmp = rs.getString("BLNO");
        out.println("  " + tmp);
        continue;
      }
    }
      

  4.   

    上面错了一个地方:红色部分去掉
       else 
      { 
        tmp = rs.getString("BLNO"); 
        out.println("  " + tmp); 
        continue; 
      }