`
kidiaoer
  • 浏览: 821892 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

EXt tree 简单增、删、改、查

阅读更多
EXt tree 简单增、删、改、查

js:

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":"她救活了一个暗器公司!"}
   ]
  }
 ]

分享到:
评论

相关推荐

    ext简单的增删改查

    在这个"EXT简单的增删改查"项目中,开发者利用EXTJS与SQLServer数据库相结合,实现了基本的数据管理功能,包括添加(Add)、删除(Delete)、修改(Update)和查询(Query)。 1. EXTJS的基本概念: - 组件...

    Ext Demo grid的增删改查例子

    接下来 在mysql里建立 数据库位ext的库 再去项目中 src/META-INF/persistence.xml的配置文件里吧&lt;!-- &lt;property name="hibernate.hbm2ddl.auto" value="update" /&gt; --&gt;这句话的注释去掉 好了 部署项目到tomcat上 ...

    ext+SSH增删改查

    EXT SSH增删改查是关于Java Web开发中的一个主题,主要涉及EXT JavaScript库与Spring、Struts和Hibernate(SSH)三大框架的集成,用于构建数据管理的前端界面和后端处理逻辑。EXT是一个强大的JavaScript UI库,提供...

    简单的EXT 增删改查

    简单的EXT 增删改查

    EXT 增删改查的一个例子

    总结来说,EXT的增删改查功能强大且灵活,它提供的数据管理机制和用户界面组件使得在前端实现复杂的业务逻辑变得简单。通过这个示例,初学者不仅可以学习EXT的基本用法,还能深入理解前端数据操作和UI交互的设计原则...

    Ext左树有表格 增删改查

    在"Ext左树有表格 增删改查"这个主题中,我们主要关注的是ExtJS如何实现左侧树形结构与右侧表格的交互,以及在这样的布局中进行数据的增、删、改、查操作。 首先,ExtJS中的树形组件(TreePanel)可以用来展示层级...

    Ext+2.0+Grid的增删改查.txt

    Ext+2.0+Grid的增删改查.txtExt+2.0+Grid的增删改查.txtExt+2.0+Grid的增删改查.txtExt+2.0+Grid的增删改查.txtExt+2.0+Grid的增删改查.txtExt+2.0+Grid的增删改查.txt

    使用ashx进行XML转Tree的增删改查操作

    使用ashx进行XML转Tree的增删改查操作 相信使用过Ext的朋友都很有感触,Ext的功能强大,界面绚丽。但是美中不足就是体积太大,前不久做项目的时候遇到这个问题,恰好发现里面一个压缩过的 Ext.js只有200K,但是已经...

    B+ Tree 增删改查 可视化

    通过图形化界面,用户可以直观地看到增删改查操作如何影响树的形态,这对于学习和调试非常有帮助。 ### 应用场景 B+ Tree被广泛应用于数据库索引,如MySQL的InnoDB存储引擎就使用了B+ Tree。文件系统如ext4也采用B+...

    ext做增删改查

    在这个场景中,我们关注的是使用MySQL数据库,Java编程语言,以及MyEclipse IDE来实现前端JSP页面与后端Java服务的交互,完成“增删改查”(CRUD)操作。CRUD代表创建(Create)、读取(Retrieve)、更新(Update)和删除...

    ext 学习资料 网格增删改查 炫酷的效果

    ext 学习资料 网格增删改查 炫酷的效果ext 学习资料 网格增删改查 炫酷的效果

    extJs 简单的增删改查

    在“简单的增删改查”这个主题中,我们将探讨如何使用ExtJS实现数据管理的基本操作,包括添加(Add)、删除(Delete)、修改(Update)和查询(Query)。 首先,我们需要了解ExtJS的核心概念,如组件(Components)...

    Ext范例,增删改查,树,界面设计

    这个压缩包文件包含的示例和资源主要展示了如何利用ExtJS实现数据操作(增删改查)以及树形视图(TreePanel)的界面设计。 首先,"增删改查"(CRUD,Create、Read、Update、Delete)是任何数据驱动应用的基础功能。...

    Ext+ssh 实现增删改查小例子

    这个"Ext+SSH"实现的增删改查例子,其核心流程可能如下: 1. **用户界面**:使用ExtJS创建一个表格,显示从服务器获取的数据。表格可能包含编辑和删除按钮,用户可以通过这些按钮触发操作。 2. **Ajax通信**:当...

    ext与数据交互增删改查大全

    "ext增删改查.rar" 文件可能包含了EXTJS 进行数据操作的具体代码示例,包括Model、Store、Proxy 的配置以及如何触发增删改查操作的代码片段。解压并研究这些文件可以帮助理解EXTJS 与MySQL 数据库的交互过程。 8. ...

    EXTJS4+STRUTS2+JAVA增删改查

    在这个"EXTJS4+STRUTS2+JAVA增删改查"的例子中,我们将深入探讨这三个技术如何协同工作,实现数据的动态管理。 EXTJS4是一个强大的JavaScript库,主要用于创建桌面级的Web应用程序。它提供了丰富的组件库,如表格、...

    ext.net与ADO.NET增删改查操作

    "admin"可能是应用程序的管理界面目录,包含用于执行增删改查操作的EXT.NET控件,如GridPanel、FormPanel等。这些控件可以绑定到数据源,并通过EXT.NET的事件处理机制(如button的click事件)调用后台的C#方法执行...

    Ext表格中增删改查实例

    本文将深入探讨如何在Ext Grid中实现增删改查(CRUD)操作,这些操作是任何数据管理应用的基础。 首先,我们需要了解`Ext.grid.Panel`,它是Ext JS中的主要表格组件。这个组件可以显示大量数据,并提供了分页、排序...

    ext用到的增删改查

    总的来说,EXT JS提供了丰富的组件和API,使得在Web应用中实现增删改查功能变得相对简单。开发者需要理解EXT JS的组件模型,熟练掌握`FormPanel`、事件监听和数据提交机制,以及与服务器端的交互流程,才能有效地...

    ext4 基础功能增删该查

    【标题】:“ext4 基础功能增删改查” 在Linux系统中,ext4是广泛使用的文件系统之一,其稳定性和效率深受用户青睐。本文将深入探讨ext4文件系统在“增删改查”这四个基本操作上的实现原理和使用方法。 一、增加...

Global site tag (gtag.js) - Google Analytics