- 浏览: 273991 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (126)
- ejb (3)
- Oracle (31)
- Sql (4)
- MySql (2)
- Jsf (3)
- struts (4)
- hibernate (3)
- spring (1)
- javascript (3)
- ext (17)
- jquery (4)
- dwr (3)
- ajax (2)
- java (19)
- Jboss (1)
- apache (3)
- window (3)
- 心情 (0)
- struts2 (1)
- design pattern (1)
- webshere (1)
- 我的淘宝 (1)
- Learn english (12)
- 项目管理 (2)
- JPA (1)
- Agile PLM (2)
- SQL Server (1)
最新评论
-
chro008:
I'm looking for method to defin ...
POI 设置单元格背景颜色 -
aa00aa00:
看样子不错,用到了easyUI ,呵呵
JSP CMS 管理系统 -
xiaokang1582830:
不错,支持一个...........
数据管理系统 -
gzzjsoft:
jdbc:mysql://localhost:3306/myd ...
Parameter metadata not available for the given statement -
blacklong:
good
POI 设置单元格背景颜色
前段时间 很多问我EXTJS动态树型该如何实现
我就下了文挡 看看发现其实用EXTJS 实现树很简单 于是做了一个小小例子
教大家如何实现EXTJS 的树型
下面 讲解如何实现
//JS 文件
Ext.onReady(function() {
//创建动态加载树
var treeLoader = new Ext.tree.TreeLoader({
dataUrl : "TreeServlet.do"
});
// 创建一个动态树的节点
var root = new Ext.tree.AsyncTreeNode({
text : "文件管理",
//默认节点的ID为0
id : "0",
draggable : true,
//图片CSS
iconCls : "nodeIcon",
cls : "folder",
isTarget : false
});
// 创建树 面板
var tree = new Ext.tree.TreePanel({
layout : "fit",
title : "<center>管理文档</center>",
split : true,
width : 200,
height : 650,
animate : false,// 是否动画
enableDD : true,// 是否支持拖放
collapsible : true,
autoScroll : true,
root : root,
// isTarget : true,
loader : treeLoader
});
// 创建表头 模型
var cm = new Ext.grid.ColumnModel([Ext.grid.RowNumberer, {
header : "ID",
dataIndex : "id"
}, {
header : "文件名称",
dataIndex : "filename"
}, {
header : "路径",
dataIndex : "url"
}, {
header : "父ID",
dataIndex : "parentId"
}]);
// 创建数据存储器
var store = new Ext.data.Store({
url : "fileList.do",
// 创建数据读取器 // 创建数据读取器 讲数据解析成JSON 数据格式
reader : new Ext.data.JsonReader({
totalProperty : "totalProperty",
// 设置跟
root : "root",
// 设置总记录
// 映射字段
fields : [{
name : "id"
}, {
name : "filename"
}, {
name : "url"
}, {
name : "parentId"
}]
})
});
// 创建后退按钮
var btn_back = {
text : "后退",
iconCls : "back",
handler : function() {
alert("我是后退");
}
};
// 创建前进按钮
var btn_forward = {
text : "前进",
iconCls : "forward",
handler : function() {
Ext.Msg.alert("提示", "您点击 前进按钮");
}
};
// 创建一个window 窗体用与新增文件
var window = new Ext.Window({
title : "<center>新增文件</center>",
width : 500,
height : 500
});
// 创建新增文件按钮
var btn_addFile = {
text : "新增文件",
handler : function() {
window.show();
}
};
// 创建新增文件夹按钮
var btn_addFolder = {
text : "新增文件夹",
handler : function() {
alert("来");
}
};
// 创建搜索按钮
var btn_search = {
text : "搜索",
iconCls : "search",
handler : function() {
Ext.Msg.alert("提示", "您点击了搜索按钮");
}
};
// 创建修改按钮
var btn_add = {
text : "修改文档",
iconCls : "save",
handler : function() {
alert("谢谢");
}
};
// 创建删除按钮
var btn_delete = {
text : "删除文档",
iconCls : "delete",
handler : function() {
Ext.Msg.confirm("确认", "-----您确定要删除吗---", function(msg) {
if (msg == "yes") {
alert("OK删除吧");
}
})
}
};
// 创建 文本输入
var input_text = {
fieldLabel : "地址",
xtype : "textfield",
width : 300,
id : "address",
value : "c:\文件管理",
selectOnFocus : true
};
// 创建转到按钮
var btn_goto = {
text : "转到",
handler : function() {
alert(Ext.getCmp("address").getValue());
Ext.getCmp("address").setValue("bbbb");
Ext.getCmp("address").setValue(Ext.getCmp("address").getValue()
+ Ext.getCmp("address").setValue("cccc"));
}
};
// 创建 数据显示 面板
var grid = new Ext.grid.GridPanel({
title : "文档显示信息",
width : 800,
height : 650,
store : store,
cm : cm,
// 一些按钮
items : [{
layout : "column",
height : 20,
tbar : [btn_add, btn_delete, input_text, btn_goto]
}],
loadMask : {
msg : "数据加载中请等待 ....."
},
// 分页 条
bbar : new Ext.PagingToolbar({
emptyMsg : "对不起没有您要的数据",
displayInfo : true,
store : store,
pagesize : 10,
displayMsg : "从 {0}记录到{1}记录共{2}记录"
}),
// 按钮条
tbar : [btn_back, btn_forward, btn_search, btn_addFolder, btn_addFile]
});
// 树选择事件
tree.on("click", function(node, obejct) {
// 如果 ID 不等于空
if (node.id != null) {
var path = node.getPath('href');
//获取路径
Ext.getCmp("address").setValue(path);
return;
}
});
// 宣冉到层上
grid.render("BodyRight");
// 加载数据设置参数
store.load({
params : {
start : 10,
limit : 10
}
});
// tree.setRootNode(root);
//渲染到DIV上
tree.render("showTree");
});
//SERVLET 用到的后台
package com.mylogin.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.tree.DefaultMutableTreeNode;
import net.sf.json.JSONArray;
import net.sf.json.JSONString;
import com.mylogin.entity.FileInfo;
import com.mylogin.service.FileInfoService;
public class TreeServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8");
// 获取子节点的ID
Integer id = Integer.parseInt(req.getParameter("node"));
//得到文件信息列表(也就是图中的省市)
List<FileInfo> list = new ArrayList<FileInfo>();
try {
list = FileInfoService.findFileInfoById(id);
} catch (SQLException e) {
System.out.println("获取列表出错");
e.printStackTrace();
}
PrintWriter out = resp.getWriter();
// 输出JSON字符格式的字符串
StringBuffer sf = new StringBuffer("[");
Integer count = 0;
//用JSON格式输出
for (int i = 0; i < list.size(); i++) {
sf.append("{'text':" + "'" + list.get(i).getFilename() + "'"
+ ",'id':" + "'" + list.get(i).getId() + "'," + "'href':'"
+ list.get(i).getUrl() + "'");
// 如果不是跟节点则换图标
System.out.println(list.get(i).getParentId());
if (list.get(i).getParentId() != 0) {
sf.append(",'icon':'images/leaf.gif'");
}
sf.append("}");
if (count < list.size() - 1) {
sf.append(",");
count++;
}
}
sf.append("]");
System.out.println(sf);
out.print(sf);
// System.out.println();
System.out.println("我的树加载的ID" + id);
// System.out.println(JSONArray.fromObject(list));
// out.print(JSONArray.fromObject(list));
}
}
///
我就下了文挡 看看发现其实用EXTJS 实现树很简单 于是做了一个小小例子
教大家如何实现EXTJS 的树型
下面 讲解如何实现
//JS 文件
Ext.onReady(function() {
//创建动态加载树
var treeLoader = new Ext.tree.TreeLoader({
dataUrl : "TreeServlet.do"
});
// 创建一个动态树的节点
var root = new Ext.tree.AsyncTreeNode({
text : "文件管理",
//默认节点的ID为0
id : "0",
draggable : true,
//图片CSS
iconCls : "nodeIcon",
cls : "folder",
isTarget : false
});
// 创建树 面板
var tree = new Ext.tree.TreePanel({
layout : "fit",
title : "<center>管理文档</center>",
split : true,
width : 200,
height : 650,
animate : false,// 是否动画
enableDD : true,// 是否支持拖放
collapsible : true,
autoScroll : true,
root : root,
// isTarget : true,
loader : treeLoader
});
// 创建表头 模型
var cm = new Ext.grid.ColumnModel([Ext.grid.RowNumberer, {
header : "ID",
dataIndex : "id"
}, {
header : "文件名称",
dataIndex : "filename"
}, {
header : "路径",
dataIndex : "url"
}, {
header : "父ID",
dataIndex : "parentId"
}]);
// 创建数据存储器
var store = new Ext.data.Store({
url : "fileList.do",
// 创建数据读取器 // 创建数据读取器 讲数据解析成JSON 数据格式
reader : new Ext.data.JsonReader({
totalProperty : "totalProperty",
// 设置跟
root : "root",
// 设置总记录
// 映射字段
fields : [{
name : "id"
}, {
name : "filename"
}, {
name : "url"
}, {
name : "parentId"
}]
})
});
// 创建后退按钮
var btn_back = {
text : "后退",
iconCls : "back",
handler : function() {
alert("我是后退");
}
};
// 创建前进按钮
var btn_forward = {
text : "前进",
iconCls : "forward",
handler : function() {
Ext.Msg.alert("提示", "您点击 前进按钮");
}
};
// 创建一个window 窗体用与新增文件
var window = new Ext.Window({
title : "<center>新增文件</center>",
width : 500,
height : 500
});
// 创建新增文件按钮
var btn_addFile = {
text : "新增文件",
handler : function() {
window.show();
}
};
// 创建新增文件夹按钮
var btn_addFolder = {
text : "新增文件夹",
handler : function() {
alert("来");
}
};
// 创建搜索按钮
var btn_search = {
text : "搜索",
iconCls : "search",
handler : function() {
Ext.Msg.alert("提示", "您点击了搜索按钮");
}
};
// 创建修改按钮
var btn_add = {
text : "修改文档",
iconCls : "save",
handler : function() {
alert("谢谢");
}
};
// 创建删除按钮
var btn_delete = {
text : "删除文档",
iconCls : "delete",
handler : function() {
Ext.Msg.confirm("确认", "-----您确定要删除吗---", function(msg) {
if (msg == "yes") {
alert("OK删除吧");
}
})
}
};
// 创建 文本输入
var input_text = {
fieldLabel : "地址",
xtype : "textfield",
width : 300,
id : "address",
value : "c:\文件管理",
selectOnFocus : true
};
// 创建转到按钮
var btn_goto = {
text : "转到",
handler : function() {
alert(Ext.getCmp("address").getValue());
Ext.getCmp("address").setValue("bbbb");
Ext.getCmp("address").setValue(Ext.getCmp("address").getValue()
+ Ext.getCmp("address").setValue("cccc"));
}
};
// 创建 数据显示 面板
var grid = new Ext.grid.GridPanel({
title : "文档显示信息",
width : 800,
height : 650,
store : store,
cm : cm,
// 一些按钮
items : [{
layout : "column",
height : 20,
tbar : [btn_add, btn_delete, input_text, btn_goto]
}],
loadMask : {
msg : "数据加载中请等待 ....."
},
// 分页 条
bbar : new Ext.PagingToolbar({
emptyMsg : "对不起没有您要的数据",
displayInfo : true,
store : store,
pagesize : 10,
displayMsg : "从 {0}记录到{1}记录共{2}记录"
}),
// 按钮条
tbar : [btn_back, btn_forward, btn_search, btn_addFolder, btn_addFile]
});
// 树选择事件
tree.on("click", function(node, obejct) {
// 如果 ID 不等于空
if (node.id != null) {
var path = node.getPath('href');
//获取路径
Ext.getCmp("address").setValue(path);
return;
}
});
// 宣冉到层上
grid.render("BodyRight");
// 加载数据设置参数
store.load({
params : {
start : 10,
limit : 10
}
});
// tree.setRootNode(root);
//渲染到DIV上
tree.render("showTree");
});
//SERVLET 用到的后台
package com.mylogin.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.tree.DefaultMutableTreeNode;
import net.sf.json.JSONArray;
import net.sf.json.JSONString;
import com.mylogin.entity.FileInfo;
import com.mylogin.service.FileInfoService;
public class TreeServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8");
// 获取子节点的ID
Integer id = Integer.parseInt(req.getParameter("node"));
//得到文件信息列表(也就是图中的省市)
List<FileInfo> list = new ArrayList<FileInfo>();
try {
list = FileInfoService.findFileInfoById(id);
} catch (SQLException e) {
System.out.println("获取列表出错");
e.printStackTrace();
}
PrintWriter out = resp.getWriter();
// 输出JSON字符格式的字符串
StringBuffer sf = new StringBuffer("[");
Integer count = 0;
//用JSON格式输出
for (int i = 0; i < list.size(); i++) {
sf.append("{'text':" + "'" + list.get(i).getFilename() + "'"
+ ",'id':" + "'" + list.get(i).getId() + "'," + "'href':'"
+ list.get(i).getUrl() + "'");
// 如果不是跟节点则换图标
System.out.println(list.get(i).getParentId());
if (list.get(i).getParentId() != 0) {
sf.append(",'icon':'images/leaf.gif'");
}
sf.append("}");
if (count < list.size() - 1) {
sf.append(",");
count++;
}
}
sf.append("]");
System.out.println(sf);
out.print(sf);
// System.out.println();
System.out.println("我的树加载的ID" + id);
// System.out.println(JSONArray.fromObject(list));
// out.print(JSONArray.fromObject(list));
}
}
///
发表评论
-
Ext this.addEvents is not a function
2012-12-10 17:53 1048这个错误是由于一个控件使用new this. ... -
ext动态表单
2012-11-22 21:55 2106为了减少异步加载的次数,于是想做一个动态表单全部由后台生成好的 ... -
一个Ext 2.1 和3.2Combox 渲染TreePanel 的BUG修复
2010-10-14 17:05 1311前端时间使用Ext2.1做开发没有 做一个 Combox 渲染 ... -
editorGridPanel 一些bug
2010-05-05 17:56 16481.首先 当我们的列多的时候 在靠近滚动条的可编辑组件 双击 ... -
ext oop
2010-04-13 23:24 1044javascript 创建一个构 ... -
ext editGridPanel 动态头和数据
2010-04-06 22:41 1342很久没有写技术文章了 杯具.... 最近一段时间 没有心思去 ... -
ext grid 动态实用使用视频
2010-01-08 18:31 1020视频下载地址 http://code.google.com/ ... -
ext 组件分类
2009-09-04 13:07 1536组件大致可以分成三大类,即基本组件、工具栏组件、表单及元素组件 ... -
Ext 面试
2009-07-26 08:46 1922EXTJS 面试会问些什么 如果是我面试别人的话 ... -
gridPanel 增删改查 带SQL语句
2009-06-19 20:33 1278gridPanel 增删改查 给大家分享 -
extjs gridPanel动态 源代码
2009-06-17 13:25 2360extjs gridPanel动态 源代码 extjs gri ... -
extjs 登陆动态
2009-06-15 21:59 1212由于群中很多兄弟要求我给他们一个 与后台交互 的例子 我 ... -
gridPanel的简单应用
2009-06-15 12:16 770今天教大家如何 用EXTJS gridPanel 显示数据 ... -
表格数据选择
2009-05-16 09:55 12881) 表格数据选择 行选择模式: Js代码 var row ... -
extjs做的一个登陆
2009-05-15 22:08 1512Ext.onReady(function() { Ext.Q ... -
extJS store 方法介绍 以及EXT中文帮助下载
2009-05-14 22:29 1610store是一个为Ext器件提供record对象的存储容器,行 ...
相关推荐
### 使用ExtJS实现动态树型结构 #### 一、引言 在Web应用开发中,树形结构(Tree)是一种非常常见的数据展示形式,尤其是在文件管理系统、目录浏览等场景下。ExtJS作为一款功能强大的JavaScript库,提供了丰富的UI...
树面板与数据存储之间的交互通过节点接口(The Node Interface)实现。这个接口封装了模型实例,提供了额外的方法和属性来适应树控件的特殊状态。例如,你可以改变树的外观,通过设置`useArrows`为`true`来隐藏边线...
总的来说,生成JSON树型表结构是将层级数据转换为易于EXT树组件解析的格式,通过合理的数据库查询和后端处理,结合前端EXT框架,可以实现高效且美观的树形数据展示。这个过程涉及到数据结构、JSON序列化、前端UI组件...
实现Ext JS下拉树的关键在于正确配置`Ext.form.field.Tree`组件。以下是一些核心配置项的详细解释: 1. **store**:下拉树的数据源,通常是一个`Ext.data.TreeStore`实例,它管理着树结构中的节点数据。你需要定义...
"ext+Struts2+Spring+Hibernate 树型菜单"是一个典型的Java Web开发框架组合,用于创建具有树状结构的用户界面,通常用于数据的层级展示,比如部门结构、文件目录等。下面将详细解释这些技术和如何协同工作。 **...
还可以通过自定义事件处理程序来实现更复杂的交互逻辑,如监听树节点的展开和折叠事件,动态调整分页参数。 6. 性能优化 为了进一步提高性能,可以在服务器端实现数据缓存,避免频繁请求相同的数据。同时,EXTJS还...
目前有很多的树形菜单组件(比如ext),dtree是一种简单易懂的js组件,不需要复杂的操作即可生产,同时支持动态从数据库引入数据。 dTree可以不用添加任何页面而直接用代码实现多个栏目,并可以实现无限分级,下面...
TreePanel支持动态加载、节点拖放、节点编辑等功能,是EXT JS的一个重要组成部分。 树形组件(TreePanel)的基本知识点包括: 1. **创建TreePanel**:首先,你需要定义一个TreePanel配置对象,包括树的根节点数据、...
这个插件是对Bootstrap原生表格的扩展,旨在实现类似EXT JS中的TreeGrid的效果。TreeGrid是一种特殊的表格,它结合了表格和树形结构的特点,能够以层级方式展示数据,非常适合用于组织层次分明的信息,如目录结构、...
异步加载树型是 ExtJS Tree 的一个重要特性,允许只在需要时动态加载子节点,从而提高页面的加载速度和用户体验。 异步加载通常通过 AJAX 请求实现,只有当用户展开一个节点时,才会向服务器请求该节点的子节点数据...
下面我们将深入探讨ComboboxTree的实现原理、主要功能以及如何在实际项目中应用。 1. **ComboboxTree的基本概念** ComboboxTree是ExtJS中的一个自定义组件,它扩展了标准的ComboBox组件,增加了树状结构的功能。...
在这个集合中,我们关注的是几种不同的树型菜单实现,包括Struts树、jQuery树以及DtTree,它们都是以JSON格式来处理和展示数据。以下是关于这些技术的详细解释: 1. **Struts Tree**: Struts是一个基于MVC(Model-...
在本系统中,EXT主要用于前端展示,它的树型菜单功能使得用户能够方便地浏览和操作组织结构,提供良好的用户体验。 Spring框架是Java企业级应用的事实标准,它提供了依赖注入、AOP(面向切面编程)以及各种服务(如...
对于动态树型结构,`Ext.tree.AsyncTreeNode`扮演着重要角色。如果一个节点没有`leaf:true`属性,那么当用户展开该节点时,Ext会通过树面板(`treepanel`)的加载器去向服务器请求数据,通常用于动态加载子节点。请求...
在ExtJS中,Tree Grid的实现通常基于`Ext.tree.Panel`和`Ext.grid.Panel`。开发者可以使用`Ext.tree.Column`来定义列,就像在普通的`Ext.grid.Panel`中一样。同时,还需要配置`store`来管理数据,这个store不仅需要...
本文将重点讨论“ext2.0树的增删改”这一主题,结合myeclipse8.5开发环境、MySQL数据库以及struts2框架,深入解析如何实现树型数据结构的操作,并添加权重功能。 首先,让我们了解一下ext2.0。ext2是Linux操作系统...
8. **`treepanel`:** 树型面板组件,用于展示层次结构的数据,通过`Ext.tree.TreePanel`类实现。 9. **`flash`:** Flash组件,用于在页面中嵌入Flash内容,自3.0版本开始支持,通过`Ext.FlashComponent`类实现。 ...
在EXTJS4中,实现一个下拉树(Combobox Tree)并支持多选和复选功能,主要是通过自定义组件(Ext.define)来完成的。这个组件继承自EXTJS的Picker字段(Ext.form.field.Picker),并添加了树形结构和复选功能。以下...
在案例中,`Ext.ux.TreeCombo` 是基于 `Ext.form.ComboBox` 进行扩展的,目的是实现一个包含树形结构的下拉框。 2. **Ext.ux.TreeCombo**: 这是一个自定义组件,它结合了ComboBox和TreePanel的特性。它继承了...
目前有很多的树形菜单组件(比如ext),dtree是一种简单易懂的js组件,不需要复杂的操作即可生产,同时支持动态从数据库引入数据。 dTree可以不用添加任何页面而直接用代码实现多个栏目,并可以实现无限分级,下面是...