dtree的下载地址为: http://www.destroydrop.com/javascripts/tree/
我觉得它很好用
我觉得它很好用
解决方案 »
- 新手的servlet求救
- Socket客户端无法接收服务端报文
- Java可以执行一个EXCEL文件里面的宏吗?
- IE能否指定JRE
- org.springframework.mail.javamail.JavaMailSenderImpl;
- spring中的jms使用
- ssh+oracle10g 自增序列表可以删除记录但是不能增加记录的问题
- 新人请教下哪位师兄有struts基础点的电子书籍啊?谢谢帮下忙顺便问下struts到底是怎么学才最好呢?
- 菜鸟请教!
- ASP 能都做到,在WEB中编辑WORD 文档!! JSP 如何实现?
- 关于单点登陆的内部子系统注销问题
- java 数据库连接池专题讨论,寻找最佳解决方案,请个位大虾参与
阿赖的也很好用。
我早先写的一个小例子,不知对你有否帮助.
import java.util.*;/**
* <p>Title: N层目录树自动生成器</p>
* <p>Description: 需要的前提条件:数据库是绑死的(一个遗憾,不过很好做)!
* <p>1>表结构:id,parent_id,title三个字段/p>
* <p>2>输出数据:页面表示/JavaScript脚本全自动生成 </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author ADA(梁金玉)
* @version 1.0
*/public class CatalogTest {
static final String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
static final String url =
"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; Connection cn; int i = 0; //目录树层次控制
StringBuffer sb = new StringBuffer("<body onload=closes()><table border=1>");
ArrayList ids = new ArrayList(); //保存所有子树的id
HashMap child = new HashMap(); //保存单独子树的所有id和处理这些id的方法名
ArrayList tt = new ArrayList(); //保存单独子树的所有id public CatalogTest() {
try {
Class.forName(driver);
cn = DriverManager.getConnection(url, "sa", "");
}
catch (SQLException ex) {
System.out.println("sql异常");
}
catch (ClassNotFoundException ex) {
System.out.println("驱动没有找到");
}
} public void getCatalogHTML(int rootId) {
getCatalog(rootId);
createScript();
} /**
* 自动生成JavaScript脚本
*/
private void createScript() {
sb.append("</table>");
sb.append("<script language=\"javascript\">");
sb.append("function closes(){");
Iterator it = ids.iterator();
while (it.hasNext()) {
sb.append("this.tree");
sb.append(it.next());
sb.append(".style.display=\"none\";");
}
sb.append("}"); Set key = child.keySet();
it = key.iterator();
while (it.hasNext()) {
String k = (String) it.next();
ArrayList value = (ArrayList) child.get(k);
if (!value.isEmpty()) {
sb.append("function ");
sb.append(k);
sb.append("(){");
sb.append("closes();");
Iterator its = value.iterator();
while (its.hasNext()) {
sb.append("this.");
sb.append(its.next());
sb.append(".style.display=\"\";");
}
sb.append("}");
}
}
sb.append("</script>");
} //测试方法
private void display() {
Set t = child.keySet();
Iterator it = t.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
t = child.entrySet();
it = t.iterator();
while (it.hasNext()) {
System.out.println(it.next());
} } /**
* 递归使用注意事项:注意输入和输出的区分。注意全局和局部的区分。
*/
ArrayList temp=new ArrayList();
private void getCatalog(int id) {
String sql = "select id,title from catalog_data where parent_id=" + id;
try {
Statement st = null;
ResultSet rs = null;
st = cn.createStatement();
rs = st.executeQuery(sql);
if (null != rs) {
while (rs.next()) {
int temp_id = rs.getInt("id");
String title = rs.getString("title");
sb.append("<tr><td id=\"tree");
sb.append(temp_id);
sb.append("\">");
if (-1 != id) {
ids.add(new Integer(temp_id));
for (int j = 0; j < i * 2; j++) {
sb.append(" ");
}
sb.append("|-");
sb.append("<a href=#>");
tt.add("tree" + temp_id);
}
if (0 == i) {
String str = "treeClick" + temp_id;
child.put(str, tt); sb.append("<a href=# onclick=treeClick");
sb.append(temp_id);
sb.append("()>");
}
sb.append(title);
sb.append("</a></td></tr>");
i++;
getCatalog(temp_id);
i--;
if (0 == i) { //i==0时意味着下一个根的子树遍历开始。所以要重新构造保存子树id的集合
tt = new ArrayList();
}
}
}else{
temp.add(new Integer(id));
}
}
catch (SQLException ex) {
System.out.println("SQL执行失败");
ex.printStackTrace();
}
}
private void putchild(){
Iterator it=temp.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
public String getText() {
return sb.toString();
} public static void main(String[] args) {
CatalogTest t = new CatalogTest();
t.getCatalogHTML( -1);
System.out.println(t.getText());
// t.putchild();
// t.display();
}
}