拼接樹結構

來源:互聯網
上載者:User

    在DRP開發中,遇見這樣一個需求:地區分區,先分為大區,大區下有省,省下有城市,需要在模型中組裝一個樹結構,然後顯示到jsp中,以下是一個實現的方法。

ClientTreeReader

/** * 遞迴讀取分銷商樹 *  * 第四步:採用div產生樹形結構 * @param conn 串連 * @param id * @param level 層次 */private void readClientTree(Connection conn, int id, int level) throws SQLException {String sql = "select * from t_client where pid=?";PreparedStatement pstmt = null;ResultSet rs = null;try {pstmt = conn.prepareStatement(sql);pstmt.setInt(1, id);rs = pstmt.executeQuery();while (rs.next()) {sbTreeHTML.append("<div>");sbTreeHTML.append("\n");for (int i=0; i<level; i++) {sbTreeHTML.append("<img src=\"../images/white.gif\">");sbTreeHTML.append("\n");}//if ("N".equals(rs.getString("is_leaf"))) {if (Constants.NO.equals(rs.getString("is_leaf"))) {sbTreeHTML.append("<img alt=\"展開\" style=\"cursor:hand;\" onClick=\"display('" + rs.getInt("id") + "');\" id=\"img" + rs.getInt("id") + "\" src=\"../images/plus.gif\">");sbTreeHTML.append("\n");sbTreeHTML.append("<img id=\"im" + rs.getInt("id") + "\" src=\"../images/closedfold.gif\">");sbTreeHTML.append("\n");sbTreeHTML.append("<a href=\"client_node_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") + "</a>");sbTreeHTML.append("\n");sbTreeHTML.append("<div style=\"display:none;\" id=\"div" + rs.getInt("id") + "\">");sbTreeHTML.append("\n");readClientTree(conn, rs.getInt("id"), level + 1);sbTreeHTML.append("</div>");sbTreeHTML.append("\n");}else {sbTreeHTML.append("<img src=\"../images/minus.gif\">");sbTreeHTML.append("\n");sbTreeHTML.append("<img src=\"../images/openfold.gif\">");sbTreeHTML.append("\n");//if ("Y1".equals(rs.getString("is_client"))) {if (Constants.YES.equals(rs.getString("is_client"))) {sbTreeHTML.append("<a href=\"client_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") +  "</a>");}else {sbTreeHTML.append("<a href=\"client_node_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") + "</a>");}sbTreeHTML.append("\n");}sbTreeHTML.append("</div>");sbTreeHTML.append("\n");}}finally {DbUtil.close(rs);DbUtil.close(pstmt);}}

JSP    顯示

<td valign="top" nowrap="nowrap">    <%=ClientManager.getInstance().getClientTreeHTMLString() %></td>

    JS控制
function display(id) { eval("var div=div"+id); eval("var img=img"+id); eval("var im=im"+id); div.style.display=div.style.display=="block"?"none":"block"; img.src=div.style.display=="block"?"../images/minus.gif":"../images/plus.gif"; im.src=div.style.display=="block"?"../images/openfold.gif":"../images/closedfold.gif"; img.alt=div.style.display=="block"?"關閉":"展開";}

顯示結果

            

    可以看到使用的Model1開發,這種方法雖然可以實現需求,但是業務處理和其他檔案比片等耦合很高,如何降低這些耦合還需要再進行處理。


    更多DRP系列部落格,其訪問《DRP項目總結》。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.