//1)先创建一棵树
menuTree = new Ext.tree.TreePanel({});
//2)增加右击事件
menuTree.on('contextmenu',showRightClickMenu,RightClickMenu);
var RightClickMenu = new Ext.menu.Menu({
//右击事件
items:[{
xtype:"button",
text:"添加节点",
icon:"images/icon/menuitem.gif",
pressed:true,
handler : function(tree) {
onInsertNode();
}
},{
xtype:"button",
text:"修改节点",
icon:"images/icon/menuitem.gif",
pressed:true,
handler : function() {
onUpdate();
}
},{
xtype:"button",
text:"删除节点",
icon:"images/icon/menuitem.gif",
pressed:true,
handler : function(tree) {
onDeleteNode();
}
}]
});
function showRightClickMenu(node,e)
{
//先让该节点被选中
node.select();
//参数node是右击的那个节点,即事件源
//参数e是事件对象
this.showAt(e.getPoint());
}
//3)未与数据库相连,只是直接在树上显示
function onInsertNode()
{
Ext.Msg.prompt('请输入新建的节点名称' , '新建标准名称' , this.onInsertNodePrompt , this) ;
}
function onInsertNodePrompt(btn , text)
{
if(btn == 'ok')
{
var selectedNode = menuTree.getSelectionModel().getSelectedNode();
var selectedParentNode = selectedNode.parentNode;
var newNode = new Ext.tree.TreeNode({
text : text
});
if (selectedParentNode == null) {
selectedNode.appendChild(newNode);
}
else
{
selectedParentNode.insertBefore(newNode, selectedNode);
}
setTimeout(function() {
treeEditor.editNode = newNode;
treeEditor.startEdit(newNode.ui.textNode);
}, 10);
}
function onDeleteNode()
{
Ext.Msg.confirm('系统提示' , '你是否确定删除此标准?' , this.onDeleteNodeConfirm , this);
};
function onDeleteNodeConfirm(btn)
{
if(btn == 'yes')
{
var selectedNode = menuTree.getSelectionModel().getSelectedNode();
selectedNode.remove();
}
}
function onUpdate()
{
Ext.Msg.confirm('系统提示' , '你是否确定修改此标准?' , this.onUpdateNode , this);
};
function onUpdateNode()
{
var selectedNode = menuTree.getSelectionModel().getSelectedNode();
Ext.Msg.prompt('请输入修改的节点名称' , '修改名称' , this.onUpdateNodePrompt , this , false , selectedNode.text) ;
}
function onUpdateNodePrompt(btn , text)
{
if(btn == 'ok')
{
var selectedNode = menuTree.getSelectionModel().getSelectedNode();
selectedNode.setText(text) ;
setTimeout(function() {
treeEditor.editNode = selectedNode;
treeEditor.startEdit(selectedNode.ui.textNode);
}, 10);
}
}
//4)与数据库相连,也是只是直接在树上显示
function onInsertNode()
{
Ext.Msg.prompt('请输入新建的节点名称' , '新建标准名称' , this.onInsertNodePrompt , this) ;
}
function onInsertNodePrompt(btn , text)
{
if(btn == 'ok')
{
var selectedNode = menuTree.getSelectionModel().getSelectedNode();
Ext.Ajax.request({
url: action的路径,
method:'post',
params:{name:text,cid:selectedNode.id},
success: function(response, option)
{
var result = response.responseText;
if(result.match('ok'))
{
alert('新增成功!');
menuTree.root.reload();
root.expand();
}
},
failure: function(response, option)
{
}
});
}
}
//该action的路径直接到一个jsp页面
<%@page contentType="application/json;charset=utf-8" import="org.springframework.web.context.support.*,org.springframework.core.io.*,org.springframework.beans.factory.*,org.springframework.beans.factory.xml.*,org.springframework.context.*,org.springframework.context.support.*,com.cssrc.bean.*,com.cssrc.dao.impl.*,com.cssrc.dao.*,java.util.List" %>
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String str[] = name.split(" ");
String code = "";
if(str.length==2)
{
code = str[1];
}
String cid = request.getParameter("cid");
int id = Integer.parseInt(cid);
ServletContext sc = request.getSession().getServletContext();
ApplicationContext ac =WebApplicationContextUtils.getWebApplicationContext(sc);//很重要获得dao
IMenuItemDAO dao = (IMenuItemDAO)ac.getBean("MenuItemDAO");
MenuItem m = dao.findById(id);
MenuItem mi = new MenuItem();
mi.setMenuBar(m.getMenuBar());
mi.setImage("menuitem.gif");
if(m.getItemCode()==1)//当前是一级菜单
{
mi.setParentId(m.getId());
List l = dao.findByProperty("parentId",m.getId());
if(l.size()==1)
{
mi.setDisplayOrder(2);
}
else
{
MenuItem t = (MenuItem)l.get(l.size()-1);
mi.setDisplayOrder(t.getDisplayOrder()+1);
}
mi.setItemCode(2);
mi.setItemName(name);
mi.setClickEvent("item.jsp");
}
else if(m.getItemCode()==2)
{
mi.setParentId(m.getId());
List l = dao.findByProperty("parentId",m.getId());
if(l.size()==0)
{
mi.setDisplayOrder(1);
}
else if(l.size()==1)
{
mi.setDisplayOrder(2);
}
else
{
MenuItem t = (MenuItem)l.get(l.size()-1);
mi.setDisplayOrder(t.getDisplayOrder()+1);
}
mi.setItemCode(3);
mi.setItemName(name);
mi.setClickEvent("standard/standardlistAction?type="+code+"");
}
dao.save(mi);
response.getWriter().write(
"ok");
%>
function onDeleteNode()
{
Ext.Msg.confirm('系统提示' , '你是否确定删除此标准?' , this.onDeleteNodeConfirm , this);
};
function onDeleteNodeConfirm(btn)
{
if(btn == 'yes')
{
var selectedNode = menuTree.getSelectionModel().getSelectedNode();
Ext.Ajax.request({
url: context+'/node/nodedelete.action',
method:'post',
params:{cid:selectedNode.id},
success: function(response, option)
{
var result = response.responseText;
var str1 = 'ok';
var str2 = 'cancel';
if(result.match(str2))
{
alert('该节点不能删除!');
}
if(result.match(str1))
{
alert('删除成功!');
menuTree.root.reload();
root.expand();
}
},
failure: function(response, option)
{
}
});
}
}
function onUpdate()
{
Ext.Msg.confirm('系统提示' , '你是否确定修改此标准?' , this.onUpdateNode , this);
};
function onUpdateNode()
{
var selectedNode = menuTree.getSelectionModel().getSelectedNode();
Ext.Msg.prompt('请输入修改的节点名称' , '修改名称' , this.onUpdateNodePrompt , this , false , selectedNode.text) ;
}
function onUpdateNodePrompt(btn , text)
{
if(btn == 'ok')
{
var selectedNode = menuTree.getSelectionModel().getSelectedNode();
Ext.Ajax.request({
url: context+'/node/nodeupdate.action',
method:'post',
params:{name:text,cid:selectedNode.id},
success: function(response, option)
{
var result = response.responseText;
var str1 = 'ok';
var str2 = 'cancel';
if(result.match(str2))
{
alert('该节点不能修改!');
}
if(result.match(str1))
{
alert('修改成功!');
menuTree.root.reload();
root.expand();
}
},
failure: function(response, option)
{
}
});
分享到:
相关推荐
8. **扩展和插件**:EXT Tree有丰富的扩展和插件,如`checkbox`(复选框节点)、`contextmenu`(右键菜单)等,可以进一步增强功能。 在文档`extjs的tree的使用.doc`中,你将找到关于如何设置这些配置、创建树实例...
标题中的"oa.rar_ext_ext java oa_ext oa_ext tree_java ext tree"似乎是一个组合字符串,它可能代表了某个项目或教程的文件结构。其中,“oa”可能是项目或系统的名称,而“ext”、“java”、“oa_ext”、“tree_...
在描述中提到的"ext带右键菜单的树"是指在ExtJS中实现的一种交互功能,即在树形控件上通过右键点击来显示一个上下文菜单。这种功能极大地提高了用户与应用程序的交互性,使得操作更加直观和便捷。 在ExtJS中,树形...
【标题】"ext TREE"指的是在软件开发领域中,尤其是Java Web开发中,EXT JS库中的Tree组件。EXT JS是一个强大的JavaScript用户界面库,用于构建富客户端应用。Tree组件是EXT JS中的一个重要部分,它允许开发者创建可...
Ext Tree 是 Ext JS 库中的一个组件,它用于在用户界面上展示层次化的数据结构,类似于文件系统的目录结构。在给定的资源中,我们有多个 HTML 文件(tree2.html, tres.html, s1.html, tree.html)和 JavaScript 文件...
在"Ext.NET后台分页增删改"这个主题中,我们将探讨如何利用Ext.NET实现数据库后台分页、树形视图操作以及Grid面板的CRUD(创建、读取、更新和删除)功能。 首先,让我们深入了解一下后台分页。在Ext.NET中,为了...
6. **代码实践**:`extTree.js` 文件很可能是实现 EXT Tree 的具体代码。在这个实践中,开发者可能定义了一个 TreePanel,并设置了相应的配置项,加载了数据,注册了事件处理器。通过阅读和分析这个文件,可以深入...
本篇将深入探讨如何在`Ext JS`中实现Tree组件的不同节点拥有不同的右键菜单,这对于提供定制化的用户体验是非常有用的。 `Ext JS`的Tree组件是一个可扩展的树形结构,用于展示层级数据。在默认情况下,Tree的所有...
以上就是关于"ext2.0 树的增删改操作"及其相关知识的详细说明。掌握这些内容,将有助于你在构建Web应用时更熟练地使用树形控件,并且能够根据需求进行定制化开发。同时,了解下拉树的实现,可以使你的界面更加友好,...
ExtTree是Ext JS库中的一个组件,用于创建和展示树形结构的数据。它在Web应用程序中广泛使用,特别是在需要组织和导航层次结构信息时。在本案例中,“extTree例子点击出现界面”指的是用户在浏览ExtTree时,通过点击...
在本文中,我们将深入探讨如何使用Ext JS的Tree Panel与JSON数据进行动态加载,并实现多选和单选功能。Ext JS是一种强大的JavaScript库,用于构建富客户端应用,而Tree Panel则是展示层次结构数据的一种组件。在后台...
EXT TREE扩展CHECKBOX JS是一种在EXT JS框架下对树形组件(Tree Panel)进行增强,实现复选框功能的技术。EXT JS是一个强大的JavaScript GUI库,它提供了丰富的组件和功能,用于构建复杂的Web应用程序。在EXT JS中,...
2. **增删改操作** - **添加节点**:可以使用`insertChild`方法向指定节点下添加子节点,需要传入索引位置和新节点对象。 - **删除节点**:使用`remove`方法删除指定的节点,如果需要从服务器删除,还需要同步更新...
本文将重点讨论“ext2.0树的增删改”这一主题,结合myeclipse8.5开发环境、MySQL数据库以及struts2框架,深入解析如何实现树型数据结构的操作,并添加权重功能。 首先,让我们了解一下ext2.0。ext2是Linux操作系统...
现在我们将围绕“EXT+SSH+Sybase增删改”的主题进行深入讲解。 EXTJS在创建Web应用中的主要角色是提供美观且功能强大的UI组件,如表格、表单、树形视图等。在"增删改"操作中,EXTJS的Grid Panel组件可以用于显示...
EXT Tree是EXT JS库中的一个组件,用于在Web应用程序中展示层次结构的数据。EXT JS是一个强大的JavaScript UI框架,提供了一系列的可复用组件,EXT Tree就是其中之一,它可以帮助开发者构建功能丰富的树形视图,常...
在本文中,我们将深入探讨`Ext.tree.TreeLoader`与JSON数据在Ext JS框架中的应用。`Ext.tree.TreeLoader`是Ext JS库中的一个组件,它负责加载和解析树形结构的数据,而JSON(JavaScript Object Notation)则是一种轻...
【标题】"ext-tree.rar_ext_ext tr_ext tre_ext.tr_ext.tree" 暗示这是一个关于Ext JS库中TreePanel组件的实例,其中可能包含了用于创建和管理数据结构的树形视图,以及与数据库交互的功能。 【描述】"ext的树的...
Ext Tree JSON Demo是一个基于ExtJS库实现的异步加载树形结构的示例项目。ExtJS是一个强大的JavaScript UI框架,广泛用于构建富客户端应用程序。在本项目中,它被用来展示如何利用JSON数据来动态加载树节点,提高...
本文将深入探讨如何在Ext Grid中实现增删改查(CRUD)操作,这些操作是任何数据管理应用的基础。 首先,我们需要了解`Ext.grid.Panel`,它是Ext JS中的主要表格组件。这个组件可以显示大量数据,并提供了分页、排序...