`

ext 动态树型的实现

    博客分类:
  • ext
阅读更多
前段时间   很多问我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));

}
}


///



  • 大小: 13.8 KB
3
0
分享到:
评论
1 楼 lijin2031427 2012-06-01  
请问 有源码 实例吗,发我一份,我的邮箱 wodediannao666@yahoo.com.cn

相关推荐

    ext_动态树型的实现

    ### 使用ExtJS实现动态树型结构 #### 一、引言 在Web应用开发中,树形结构(Tree)是一种非常常见的数据展示形式,尤其是在文件管理系统、目录浏览等场景下。ExtJS作为一款功能强大的JavaScript库,提供了丰富的UI...

    4.0Ext 树型结构

    树面板与数据存储之间的交互通过节点接口(The Node Interface)实现。这个接口封装了模型实例,提供了额外的方法和属性来适应树控件的特殊状态。例如,你可以改变树的外观,通过设置`useArrows`为`true`来隐藏边线...

    生成JSON树型表结构

    总的来说,生成JSON树型表结构是将层级数据转换为易于EXT树组件解析的格式,通过合理的数据库查询和后端处理,结合前端EXT框架,可以实现高效且美观的树形数据展示。这个过程涉及到数据结构、JSON序列化、前端UI组件...

    ext js 下拉树

    实现Ext JS下拉树的关键在于正确配置`Ext.form.field.Tree`组件。以下是一些核心配置项的详细解释: 1. **store**:下拉树的数据源,通常是一个`Ext.data.TreeStore`实例,它管理着树结构中的节点数据。你需要定义...

    ext+struts2+spring+hibernate 树型菜单

    "ext+Struts2+Spring+Hibernate 树型菜单"是一个典型的Java Web开发框架组合,用于创建具有树状结构的用户界面,通常用于数据的层级展示,比如部门结构、文件目录等。下面将详细解释这些技术和如何协同工作。 **...

    extjs 树型分页组件

    还可以通过自定义事件处理程序来实现更复杂的交互逻辑,如监听树节点的展开和折叠事件,动态调整分页参数。 6. 性能优化 为了进一步提高性能,可以在服务器端实现数据缓存,避免频繁请求相同的数据。同时,EXTJS还...

    dtree树型控件(纯js)

     目前有很多的树形菜单组件(比如ext),dtree是一种简单易懂的js组件,不需要复杂的操作即可生产,同时支持动态从数据库引入数据。  dTree可以不用添加任何页面而直接用代码实现多个栏目,并可以实现无限分级,下面...

    EXT JS 实例集合

    TreePanel支持动态加载、节点拖放、节点编辑等功能,是EXT JS的一个重要组成部分。 树形组件(TreePanel)的基本知识点包括: 1. **创建TreePanel**:首先,你需要定义一个TreePanel配置对象,包括树的根节点数据、...

    Bootstrap树型表格和多标题表格

    这个插件是对Bootstrap原生表格的扩展,旨在实现类似EXT JS中的TreeGrid的效果。TreeGrid是一种特殊的表格,它结合了表格和树形结构的特点,能够以层级方式展示数据,非常适合用于组织层次分明的信息,如目录结构、...

    extjs tree 异步加载树型

    异步加载树型是 ExtJS Tree 的一个重要特性,允许只在需要时动态加载子节点,从而提高页面的加载速度和用户体验。 异步加载通常通过 AJAX 请求实现,只有当用户展开一个节点时,才会向服务器请求该节点的子节点数据...

    Extjs4.X下comboboxTree下拉树型菜单,完美支持多选、单选,绝对好用

    下面我们将深入探讨ComboboxTree的实现原理、主要功能以及如何在实际项目中应用。 1. **ComboboxTree的基本概念** ComboboxTree是ExtJS中的一个自定义组件,它扩展了标准的ComboBox组件,增加了树状结构的功能。...

    n多树型菜单大集合,struts树 jquery树 dttree等

    在这个集合中,我们关注的是几种不同的树型菜单实现,包括Struts树、jQuery树以及DtTree,它们都是以JSON格式来处理和展示数据。以下是关于这些技术的详细解释: 1. **Struts Tree**: Struts是一个基于MVC(Model-...

    ext+spring+hibernat+struts 人力资源管理系统

    在本系统中,EXT主要用于前端展示,它的树型菜单功能使得用户能够方便地浏览和操作组织结构,提供良好的用户体验。 Spring框架是Java企业级应用的事实标准,它提供了依赖注入、AOP(面向切面编程)以及各种服务(如...

    Ext学习笔记-个人版.doc

    对于动态树型结构,`Ext.tree.AsyncTreeNode`扮演着重要角色。如果一个节点没有`leaf:true`属性,那么当用户展开该节点时,Ext会通过树面板(`treepanel`)的加载器去向服务器请求数据,通常用于动态加载子节点。请求...

    Ext用户扩展控件-----树形表格

    在ExtJS中,Tree Grid的实现通常基于`Ext.tree.Panel`和`Ext.grid.Panel`。开发者可以使用`Ext.tree.Column`来定义列,就像在普通的`Ext.grid.Panel`中一样。同时,还需要配置`store`来管理数据,这个store不仅需要...

    ext2.0树的增删改

    本文将重点讨论“ext2.0树的增删改”这一主题,结合myeclipse8.5开发环境、MySQL数据库以及struts2框架,深入解析如何实现树型数据结构的操作,并添加权重功能。 首先,让我们了解一下ext2.0。ext2是Linux操作系统...

    extJs xtype 类型

    8. **`treepanel`:** 树型面板组件,用于展示层次结构的数据,通过`Ext.tree.TreePanel`类实现。 9. **`flash`:** Flash组件,用于在页面中嵌入Flash内容,自3.0版本开始支持,通过`Ext.FlashComponent`类实现。 ...

    extjs4 实现下拉树并支持复选

    在EXTJS4中,实现一个下拉树(Combobox Tree)并支持多选和复选功能,主要是通过自定义组件(Ext.define)来完成的。这个组件继承自EXTJS的Picker字段(Ext.form.field.Picker),并添加了树形结构和复选功能。以下...

    Extjs中ComboBoxTree实现的下拉框树效果(自写)

    在案例中,`Ext.ux.TreeCombo` 是基于 `Ext.form.ComboBox` 进行扩展的,目的是实现一个包含树形结构的下拉框。 2. **Ext.ux.TreeCombo**: 这是一个自定义组件,它结合了ComboBox和TreePanel的特性。它继承了...

    dtree、JavaScript编写成的简单的树形菜单组件

    目前有很多的树形菜单组件(比如ext),dtree是一种简单易懂的js组件,不需要复杂的操作即可生产,同时支持动态从数据库引入数据。 dTree可以不用添加任何页面而直接用代码实现多个栏目,并可以实现无限分级,下面是...

Global site tag (gtag.js) - Google Analytics