//创建JSONTree.java
package com.tree;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import net.sf.json.JSONArray;
import com.luke.hm.sf.ConnectionPool;
public class JSONTree{
private String PID;
public String getJSONString(){
Connection conn =null;
Statement st = null;
ResultSet rs = null;
ArrayList TreeNodeArray = null;
String SQLString = "SELECT * FROM S_MLS WHERE PID="+this.PID+" ORDER BY DID";
try
{
conn = ConnectionPool.getConnection();
st = conn.createStatement();
rs = st.executeQuery("SELECT PID FROM S_MLS WHERE PID>0 Group By PID Order By PID");
StringBuffer parentIDBuffer =new StringBuffer();
parentIDBuffer.append("|");
while(rs.next())
{
parentIDBuffer.append(rs.getString("PID"));
parentIDBuffer.append("|");
}
//得到所有的parentDID列表(这是一个巧妙的算法^_^)
String parentIDString = parentIDBuffer.toString();
// System.out.println(parentIDString);
rs = st.executeQuery(SQLString);
TreeNodeArray = new ArrayList();
while(rs.next())
{
JSONTreeNode TreeNode = new JSONTreeNode();
TreeNode.setId(rs.getString("DID"));
TreeNode.setText(rs.getString("JDMC"));
TreeNode.setDescription(rs.getString("JDMC"));
TreeNode.setHref("rightframe.jsp?did="+rs.getString("DID").toString());
TreeNode.setHrefTarget("rightFrame");
// System.out.println(rs.getString("DID"));
// System.out.println(parentIDString.indexOf("|"+rs.getString("DID")+"|"));
if (parentIDString.indexOf("|"+rs.getString("DID")+"|")>=0) //父节点
{
TreeNode.setCls("folder");
TreeNode.setLeaf(false);
TreeNode.setExpandable(false);
}
else //子节点
{
TreeNode.setCls("file");
TreeNode.setLeaf(true);
TreeNode.setExpandable(false);
}
TreeNodeArray.add(TreeNode);
}
// System.out.println(TreeNodeArray.size());
// System.out.println(JSONArray.fromObject(TreeNodeArray));
JSONArray jsonarr = JSONArray.fromObject(TreeNodeArray); //得到JSON数组
return jsonarr.toString();//返回JSON数据
}
catch(Exception e)
{
System.out.println("getJSONString() of JSONTree.java throws : "+e.toString());
return "";
}finally{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public String getPID() {
return PID;
}
public void setPID(String pid) {
PID = pid;
}
public static void main(String[] args) {
// JSONTree tree = new JSONTree();
// tree.setPID("1");
// String tt = tree.getJSONString();
// System.out.println(tt);
}
}
//创建JSONTreeNode
package com.tree;
import java.io.Serializable;
public class JSONTreeNode implements Serializable{
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
}
private String id; //ID
private String text; //节点显示
private String cls; //图标
private boolean leaf; //是否叶子
private String href; //链接
private String hrefTarget; //链接指向
private boolean expandable; //是否展开
private String description; //描述信息
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getCls() {
return cls;
}
public void setCls(String cls) {
this.cls = cls;
}
public boolean isLeaf() {
return leaf;
}
public void setLeaf(boolean leaf) {
this.leaf = leaf;
}
public String getHref() {
return href;
}
public void setHref(String href) {
this.href = href;
}
public String getHrefTarget() {
return hrefTarget;
}
public void setHrefTarget(String hrefTarget) {
this.hrefTarget = hrefTarget;
}
public boolean isExpandable() {
return expandable;
}
public void setExpandable(boolean expandable) {
this.expandable = expandable;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
//get、set方法。略。
}
//创建index.jsp
<%@page contentType="text/html; charset=GBK"%>
<%@page import="com.luke.hm.tree.EJBContext"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="<%=EJBContext.getRootPath()%>/ext/resources/css/ext-all.css"/>
<script type="text/javascript" src="<%=EJBContext.getRootPath()%>/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="<%=EJBContext.getRootPath()%>/ext/ext-all.js"></script>
<script type="text/javascript" src="./mytree.js"></script>
</head>
<body>
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" onContextMenu="return false;">
<tr>
<td align="left" valign="top" >
<!--树的填充区域-->
<div id="tree_div" style="height:101%;width:100%"></div>
</td>
</tr>
</table>
</body>
</html>
//创建Tree.jsp
<%@ page language="java" pageEncoding="GBK"%>
<jsp:useBean class="com.tree.JSONTree" id="JSONTree"></jsp:useBean>
<%
String PID = "";
if (request.getParameter("DID")!=null)
{
PID = request.getParameter("DID").toString();
}
JSONTree.setPID(PID);
// System.out.println(JSONTree.getJSONString());
%>
<%=JSONTree.getJSONString()%>
//创建mytree.js
Ext.onReady(function(){
var Tree = Ext.tree;
//定义根节点的Loader
var treeloader=new Tree.TreeLoader({dataUrl:'tree.jsp?DID=1'});
//异步加载根节点
var rootnode=new Tree.AsyncTreeNode({
id:'1',
text:'目录树根节点'
});
var treepanel = new Tree.TreePanel({
//renderTo:"tree_div",//如果使用renderTo,则不能使用setRootNode()方法,需要在TreePanel中设置root属性。
el:'tree_div', //填充区域
rootVisible:true, //隐藏根节点
border:true, //边框
animate:true, //动画效果
autoScroll:true, //自动滚动
enableDD:false, //拖拽节点
containerScroll:true,
loader:treeloader
});
//设置根节点
treepanel.setRootNode(rootnode);
//响应事件,传递node参数
treepanel.on('beforeload',
function(node){
treepanel.loader.dataUrl='tree.jsp?DID='+node.id; //定义子节点的Loader
});
treepanel.render();
rootnode.expand(false,false);
});
别忘记把json.jar加进去
库表设计
DID PID JDMC
分享到:
相关推荐
extjs tree 异步加载树型完整的一个web工程,自已已经试过,可用。
AJAX: 以JSON数据格式,使用ExtJS构造动态异步加载的树。
最近在学习extjs tree,有两个不错的例子,希望对需要的朋友有所帮助!
在家研究了一下extjs异步树,-每个节点都异步加载-前后台代码都有-附整个工程-运行通过-前台代码请看doctree.js,后台代码请看TreeService.java,运行环境:Myeclipse6.5+tomcat7.0.27
ExtJs Tree
extjs4,当点击左边的树,右边会生成相应的面板,代码精简,欢迎大家来学习,有问题可以直接交流。
Extjs的tree Extjs的tree Extjs的tree Extjs的tree Extjs的tree
ExtJs 2.2.1 tree实例,内附mysql数据文件 1. 数据节点一次性加载 2. 节点分为两个类(项目和设备) 3. 右键菜单 4. 节点增、删、改操作 ....... 后台是java struts1。 本例旨在说明extjs的tree操作,后台操作很简陋...
extjs tree 学习资料extjs tree 学习资料extjs tree 学习资料extjs tree 学习资料
Extjs Tree + JSON + Struts2 例子
Extjs Tree + JSON + Struts2 示例源代码
区别在于,远程脚本调用方式加载树节点信息使用的是WebInvokeTreeLoader,需要通过fn属性来指定用于加载数据的远程方法,并在...而传统的树节点加载器是Ext.tree.TreeLoader,需要指定一个url来获得json数据。
mysql的数据库 extjs 动态加载 增删改查 拖拽 Tree 绝对经典
extjs的tree的使用.doc
ExtJs中Store加载(load)时候提示信息
ExtJs4 Checkbox tree
通过java 访问数据库而生成节点 子节点的 ID 与 父节点的关系为“父节点id_子节点id”此id为数据库中的id 同理“父节点id_子节点id_子子节点id”,因此加载树时将node.id做为参数 通过split("_"),根据数据的长度就...
Ext各种组件的使用实例,Extjs tree+grid+form+panel 使用实例
利用extjs框架实现的后台经典显示, tree框架,动态加载。
access 数据库,可增加 删除树节点!!