Ext tree add update delete

Ext.onReady(function() {
 // 树形面板
 var tree = new Ext.tree.TreePanel({
 id : 'tree-mianban',
 title : '树',
 region : 'west',
 animate : true,
 enableDD : true,
 containerScroll : false,
 loader : new Ext.tree.TreeLoader({
 dataUrl : 'scripts/advancedTree01.json'
 }),
 lines : true,
 // selModel : new Ext.tree.MultiSelectionModel(),
 containerScroll : false,
 border : true
 });
 // 根节点
 var root = new Ext.tree.AsyncTreeNode({
 text : '木叶',
 draggable : false,
 id : 'root'
 // /children : json
 });
 // 树形编辑器
 var treeEditer = new Ext.tree.TreeEditor(Ext.getCmp('tree-mianban'), {
 id : 'tree-Manage',
 allowBlank : false
 // 输入值不可以为空
 });
 // 弹出窗口
 var win = new Ext.Window({
 maskDisabled : false,
 id : 'tree-window',
 modal : true,// 是否为模式窗口
 constrain : true,// 窗口只能在viewport指定的范围
 closable : true,// 窗口是否可以关闭
 closeAction : 'hide',
 layout : 'fit',
 width : 300,
 height : 200,
 plain : true,
 items : [{
 id : 'tree-window-view',
 border : false
 }]
 });
 // 给tree添加事件
 tree.on('rightClickCont', tree.rightClick, tree);
 
// 模块销毁函数
 function destroy() {
 this.win.destroy();// 将win窗口销毁,否则在IE中会报错
 }
 // 本例的主角,加载 tree TreePanel
 tree.setRootNode(root);
 tree.render(document.body);
 root.expand(true, true);
 // 定义右键菜单
 var rightClick = new Ext.menu.Menu({
 id : 'rightClickCont',
 items : [{
 id : 'addNode',
 text : '添加',
 // 增加菜单点击事件
 menu : [{
 id : 'insertNode',
 text : '添加兄弟节点',
 handler : function(tree) {
 
insertNode();
 }
 }, {
 id : 'appendNode',
 text : '添加儿子节点',
 handler : function(tree) {
 
appendNodeAction();
 }
 }]
 }, '-', {
 id : 'delNode',
 text : '删除',
 handler : function(tree) {
 delNodeAction();
 }
 }, {
 id : 'modifNode',
 text : '修改',
 handler : function() {
 modifNodeAction()
 }
 }, {
 id : 'viewNode',
 text : '查看',
 handler : function(tree) {
 veiwNodeAction();
 }
 }]
 });
 // 添加点击事件
 tree.on('click', function(node) {
 if (node.id != 'root') {
 // alert(node.id);
 alert('我是:' + node.text + ',我的id是' + node.id + '');
 }
 });
 // 增加右键弹出事件
 tree.on('contextmenu', function(node, event) {// 声明菜单类型
 event.preventDefault();// 这行是必须的,使用preventDefault方法可防止浏览器的默认事件操作发生。
 
node.select();
 rightClick.showAt(event.getXY());// 取得鼠标点击坐标,展示菜单
 });
 // 添加兄弟节点事件实现
 function insertNode() {
 var selectedNode = tree.getSelectionModel().getSelectedNode();
 var selectedParentNode = selectedNode.parentNode;
 
var newNode = new Ext.tree.TreeNode({
 text : '新建节点' + selectedNode.id
 });
 if (selectedParentNode == null) {
 selectedNode.appendChild(newNode);
 } else {
 selectedParentNode.insertBefore(newNode, selectedNode);
 }
 setTimeout(function() {
 treeEditor.editNode = newNode;
 treeEditor.startEdit(newNode.ui.textNode);
 }, 10);
 };
 // 添加子节点事件实现
 function appendNodeAction() {
 
var selectedNode = tree.getSelectionModel().getSelectedNode();
 if (selectedNode.isLeaf()) {
 selectedNode.leaf = false;
 }
 var newNode = selectedNode.appendChild(new Ext.tree.TreeNode({
 text : '新建节点' + selectedNode.id
 }));
 newNode.parentNode.expand(true, true, function() {
 tree.getSelectionModel().select(newNode);
 setTimeout(function() {
 treeEditor.editNode = newNode;
 treeEditor.startEdit(newNode.ui.textNode);
 }, 10);
 });// 将上级树形展开
 }
 // 删除节点事件实现
 function delNodeAction() {
 
var selectedNode = tree.getSelectionModel().getSelectedNode();
 // 得到选中的节点
 selectedNode.remove();
 };
 // 修改节点事件实现
 function modifNodeAction() {
 var selectedNode = tree.getSelectionModel().getSelectedNode();// 得到选中的节点
 treeEditor.editNode = selectedNode;
 treeEditor.startEdit(selectedNode.ui.textNode);
 };
 // 查看事件实现
 function veiwNodeAction() {
 
var viewPanel = Ext.getCmp('tree-window-view');
 var selectedNode = tree.getSelectionModel().getSelectedNode();
 // 得到选中的节点
 var tmpid = selectedNode.attributes.id;
 var tmpname = selectedNode.attributes.text;
 var tmpdes = selectedNode.attributes.des;
 win.setTitle(tmpname + '的介绍');
 win.show();
 var dataObj = {
 id : tmpid,
 name : tmpname,
 des : tmpdes
 }
 var tmpTpl = new Ext.Template([
 '<div style="margin:10px"><div style="margin:10px">编号:{id}</div>',
 '<div style="margin:10px">名称:{name}</div>',
 '<div style="margin:10px">描述:{des}</div></div>']);
 tmpTpl.overwrite(viewPanel.body, dataObj);
 };
});
 
html:
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Drag and Drop between 2 TreePanels</title>
<link rel="stylesheet" type="text/css"
 href="D:/ext-2.2.1/resources/css/ext-all.css" />
<script type="text/javascript"
 src="D:/ext-2.2.1/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="D:/ext-2.2.1/ext-all.js"></script>
<script type="text/javascript" src="./treelip.js"></script>
</head>
<div></div>
<body>
</body>
</html>
json:
 [
 {
 "text":"卡卡西班",
 "id":"01",
 "allowDrag":false,
 "des":"最强的组合!",
 "children":[
 {"text":"小樱","id":"0101","allowDrag":false,"des":"一个很可爱的女孩!","children":[
 {"text":"小樱1","id":"010101","leaf":true,"allowDrag":true,"des":"一个很可爱的女孩!"},
 {"text":"鸣人1","id":"010202","leaf":true,"allowDrag":true,"des":"四代火影的儿子!"},
 {"text":"佐助1","id":"010303","leaf":true,"allowDrag":true,"des":"为了杀自己哥哥而活着的男人!"}
 ]
 },
 {"text":"鸣人","id":"0102","leaf":true,"allowDrag":true,"des":"四代火影的儿子!"},
 {"text":"佐助","id":"0103","leaf":true,"allowDrag":true,"des":"为了杀自己哥哥而活着的男人!"}
 ]
 },
 {
 "text":"凯班",
 "id":"02",
 "allowDrag":false,
 "des":"有一个很白痴的老师!",
 "children":[
 {"text":"小李","id":"0201","leaf":true,"allowDrag":true,"des":"他的努力意识值得任何人学习!"},
 {"text":"宁次","id":"0202","leaf":true,"allowDrag":true,"des":"白眼族的天才忍者!"},
 {"text":"天天","id":"0203","leaf":true,"allowDrag":true,"des":"她救活了一个暗器公司!"}
 ]
 }
 ]


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lipeng_nii/archive/2009/02/18/3905450.aspx
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值