经过几天的努力,终于搞定了,动态连接数据库加载tree莱单中Node,这个也在网上查了不少资料,可惜啊,基本上都是转载一人之手。看上去很麻烦。咋一看就头晕,功夫不负有心人,我终于找到一个算是简单的方法,但是,还是不好用,还得靠自己啊,最后我把它们的代码综合参考一下,整理之后还算可以,虽然有点乱慢慢看。
数据库表设计
DROP TABLE treenode;
CREATE TABLE treenode (
tid int NOT NULL PRIMARY KEY,
parentid int ,
text char(16) NOT NULL,
href char(32)
);
INSERT INTO treenode (tid, parentid, text, href) VALUES(-100, -100,'01','hello.html');
INSERT INTO treenode (tid, parentid, text, href) VALUES(1, -100,'01','hello.html')
INSERT INTO treenode (tid, parentid, text, href) VALUES(2, -100,'02', 'hello.html')
INSERT INTO treenode (tid, parentid, text, href) VALUES(3, -100,'03', 'hello.html')
INSERT INTO treenode (tid, parentid, text, href) VALUES(4, 1,'04','hello.html')
INSERT INTO treenode (tid, parentid, text, href) VALUES(5, 1,'05','hello.html')
INSERT INTO treenode (tid, parentid, text, href) VALUES(6, 2,'02-01','hello.html')
INSERT INTO treenode (tid, parentid, text, href) VALUES(7, 2,'02-01', 'hello.html')
INSERT INTO treenode (tid, parentid, text, href) VALUES(8, 3,'03-01','hello.html')
INSERT INTO treenode (tid, parentid, text, href) VALUES(9, 3,'03-02','hello.html')
INSERT INTO treenode (tid, parentid, text,href) VALUES(10, 3,'03-03', 'hello.html')
Extjs代码:
Ext.onReady(function(){
var Tree = Ext.tree;
var treeloader=new Tree.TreeLoader({dataUrl:'servlet/TreeAction?TID=-100'});
//定义树的跟节点
var root=new Ext.tree.AsyncTreeNode({
id:"-100",//根节点id
draggable:false,
expanded :true,
text:"后台管理"
});
//生成树形面板
var tree=new Ext.tree.TreePanel({
renderTo:'Tree',
root:root,//定位到根节点
width:150,
height:300,
animate:true,//开启动画效果
enableDD:false,//不允许子节点拖动
autoScroll:true,
loader:treeloader
// border:false,//没有边框
// rootVisible:false//设为false将隐藏根节点,
});
tree.setRootNode(root);
tree.on('beforeload',
function(node){
tree.loader.dataUrl='servlet/TreeAction?TID='+node.id; //定义子节点的Loader
});
tree.render();
root.expand();
});
java代码:
//从数据库中返回父节点id号
String sql="SELECT parentid FROM treenode WHERE parentid>0 Group By parentid Order By parentid";
StringBuilder s= new StringBuilder();
PreparedStatement pst = null;
ResultSet rs = null;
try{
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
while(rs.next())
{
s.append('|');
s.append(rs.getInt("parentid"));
}
}catch(SQLException e){
e.printStackTrace();
}
return s;
}
//从数据库返回JSONArray字符串对象类
StringBuilder s=this.getResulsetRow(conn);
ArrayList al=new ArrayList();
StringBuilder node=new StringBuilder("[");
String sql="SELECT * FROM treenode WHERE parentid="+pid+" ORDER BY tid";
Statement pst = null;
ResultSet rs = null;
try{
pst = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = pst.executeQuery(sql);
rs.last();
int i=rs.getRow();
System.out.println(i);
rs.first();
while(rs.next())
{
String p=String.valueOf(rs.getInt("tid"));
node.append("{id:'"+p+"',text:'"+rs.getString("text").trim()+"',href:'"+rs.getString("href").trim()+"',");
//没有用set和get方法,好像不太好用,这里用了我自己的写法,
// TreeNode td=new TreeNode();
// td.setTid(rs.getInt("tid"));
// td.setText(rs.getString("text").trim());
// td.setHref(rs.getString("href").trim());
if(s.indexOf("|"+p+"|")!=-1){
node.append("cls:'folder',leaf:"+false+"}");
// td.setCls("folder");
// td.setLeaf(false);
}else{
node.append("cls:'file',leaf:"+true+"}");
// td.setCls("file");
// td.setLeaf(true);
}
int row=rs.getRow();
System.out.println(row);
if(row<i){
node.append(",");
}
// al.add(td);
}
} catch(SQLException e){
e.printStackTrace();
}
node.append("]");
return node;
分享到:
相关推荐
总的来说,ExtJS Tree 示例展示了如何将动态数据与用户界面相结合,提供一个直观且功能丰富的树状导航系统,同时通过Access数据库支持对树结构的增删操作。通过深入理解和实践,你可以创建出适应各种业务需求的高效...
通过java 访问数据库而生成节点 子节点的 ID 与 父节点的关系为“父节点id_子节点id”此id为数据库中的id 同理“父节点id_子节点id_子子节点id”,因此加载树时将node.id做为参数 通过split("_"),根据数据的长度就...
总之,ExtJS 动态加载、增删改查和拖拽Tree的实现,结合MySQL数据库的操作,能够帮助你构建出功能强大且高效的前端数据管理界面。掌握这些技术,不仅可以提升开发效率,还能为用户提供流畅的操作体验。
### 使用ExtJS实现动态加载树状结构 #### 数据库背景 为了实现在ExtJS中动态加载树状结构,首先需要创建一个能够存储组织结构信息的数据表。本文将使用Oracle数据库来构建一个简单的组织架构表。 - **表结构**: ...
在本文中,我们将深入探讨如何使用ExtJS框架的Tree组件,结合JSON数据格式以及Struts 2框架,来实现Ajax动态加载树形结构的节点。这是一项常见的需求,特别是在构建可扩展、用户友好的Web应用时,动态加载的树结构...
- ExtJS Tree支持拖放操作,可以将节点在树之间或内部进行移动,实现动态调整树结构。 6. **源码分析** - 通过阅读源码,可以深入理解TreePanel的工作原理,包括节点渲染、数据绑定、事件处理等方面的实现细节。 ...
本文介绍了如何在Extjs中实现动态加载树的功能,包括数据库设计、前端页面布局以及JavaScript代码实现等几个方面。通过以上步骤,你可以轻松地为Web应用添加一个动态加载的树形导航菜单,提高用户的使用体验。当然,...
【ExtJS动态加载树】是网页开发中一种常见的交互方式,它允许用户逐步加载树形结构的数据,提高页面的性能和用户体验。在ExtJS框架下,我们可以利用其强大的组件库来构建这样的功能。 首先,我们来看一下数据库背景...
本文详细介绍了如何使用ExtJS中的`Ext.ux.tree.TreeGrid`组件实现异步加载功能,包括前端配置和后端数据处理两个方面。通过这种方式可以有效提升用户体验,同时减轻服务器的压力。在实际开发过程中,还需要根据具体...
ExtJS4是一个强大的JavaScript框架,用于构建富客户端应用程序。在这个示例中,我们将探讨如何实现一个动态树结构,其中数据是通过...这种动态加载的方式使得树结构可以根据用户交互灵活地展示数据,提高了用户体验。
总结来说,"Extjs 无限树菜单 后台拼接json"涉及到的技术点包括:ExtJS的树形组件使用、后台动态生成JSON、无限滚动加载策略、以及前端和后端的异步通信。通过这样的方式,我们可以构建出动态、可扩展且高效的树形...
1. **EXTJS组件使用**:理解EXTJS的各种组件,如Panel、Grid、Form、Tree等,以及如何根据需求组合和定制这些组件。 2. **数据绑定**:EXTJS支持双向数据绑定,通过Store与Model实现视图和数据的同步更新,简化了...
还可以设置tree的展开策略,例如按需加载(async)。 5. **加载和渲染**:当页面加载完毕,TreePanel会自动发送请求到服务器获取数据,并根据返回的JSON数据动态构建TreeView。 在实际应用中,`利用TreeView控件...
总结,结合ExtJS和JSP,我们可以创建一个动态的、异步加载的树形视图,通过JSP在服务器端生成数据,然后在客户端使用ExtJS进行渲染和交互。这种方案在展示大量层次化数据时,既提供了良好的用户体验,又兼顾了性能。
通常,Ext JS与数据库的交互是通过后端服务完成的,例如PHP、Java或Node.js,它们将数据库查询结果转换为JSON格式,再由Grid的Store进行解析和显示。 5. **日期计算**:在JavaScript中,处理日期和时间可以使用内置...
在Visual Studio(VS)开发环境中,使用ExtJS的TreePanel组件可以创建动态的、交互式的树形结构数据展示。本文将深入探讨如何基于Ext4.2版本实现一个简单的TreePanel demo,结合数据库进行后台的数据操作,包括增、...
`var menutree1 = new Ext.tree.TreePanel({` 这段代码用于创建一个基于 ExtJS 框架的树形菜单对象。`Ext.tree.TreePanel` 是一个功能强大的树形菜单控件,支持自动滚动、动画效果、拖放等功能,并可以通过配置参数...
2. **树形节点(TreeNodes)**:在ExtJS中,树形组件(TreePanel)用于展示层级结构的数据。每个节点(TreeNode)可以包含子节点,并且支持拖放、展开/折叠、选择等多种操作。开发者可以通过配置树节点的属性和事件...