- 浏览: 237947 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
月度银墙:
wangxiang243 写道不错 !但是ext4中六月和十二 ...
ext2,3,和4 版本 只显示年月的日期插件 -
38123978:
你好,我最近在看cassandra的性能,我想问一下5000万 ...
Cassandra学习笔记3 -
zhaojinmeng:
您好楼主,extjs5要怎么扩展啊?求指导
ext2,3,和4 版本 只显示年月的日期插件 -
love_wting:
为什么下拉框的表格样式显示了,数据访问json也从数据库中取到 ...
Extjs 下拉grid -
laungcisin:
yangxiutian 写道另外Ext4.2.1还故意把x-m ...
ext2,3,和4 版本 只显示年月的日期插件
当时遇到如下问题:
拖拽A tree 的a节点到B tree ,a节点可以顺利地被添加到了B tree中,我的问题是如何此时还让a 节点留在在A tree中,而不是彻底给了B tree。
这里做一下当时的一种解决方法,或许不是最好的方法 (大概思路是退拽完 往回追加所拖拽的node)
当时ext使用版本 3.3
首先 使tree的node具有clone方法
代码如下:
Ext.override(Ext.tree.TreeNode, { clone: function() { var atts = this.attributes; if(this.childrenRendered || this.loaded || !this.attributes.children) { var clone = new Ext.tree.TreeNode(Ext.apply({}, atts)); } else { var newAtts = Ext.apply({}, atts); newAtts.children = this.cloneUnrenderedChildren(); var clone = new Ext.tree.AsyncTreeNode(newAtts); } clone.text = this.text; for(var i=0; i<this.childNodes.length; i++){ clone.appendChild(this.childNodes[i].clone()); } return clone; }, cloneUnrenderedChildren: function() { unrenderedClone = function(n) { if(n.children) { for(var j=0; j<n.children.length; j++) { n.children[j] = unrenderedClone(n.children[j]); } } return n; }; var c = []; for(var i=0; i<this.attributes.children.length; i++) { c[i] = Ext.apply({}, this.attributes.children[i]); c[i] = unrenderedClone(c[i]); } return c; } });下面造2个树 :
第1个树
// yui-ext tree var tree = new Tree.TreePanel({ animate:true, autoScroll:true, loader: new Tree.TreeLoader(), enableDD:true, containerScroll: true, border: false, width: 250, height: 300, dropConfig: {appendOnly:true} }); // set the root node var root = new Tree.AsyncTreeNode({ text: 'Ext JS', draggable:false, // disable root node dragging id:'src', children: [ {text: '节点1',id:"node_1",leaf: true}, {text: '节点2',id:"node_2",leaf: false,children: [ {text: '节点21',id:"node_21",leaf: true}, {text: '节点22',id:"node_22",leaf: true} ]} ] }); tree.setRootNode(root); tree.render('tree'); root.expand(true, true);
第2个树:
// ExtJS tree var tree2 = new Tree.TreePanel({ animate:true, autoScroll:true, rootVisible: false, loader: new Ext.tree.TreeLoader(), containerScroll: true, border: false, width: 250, height: 300, enableDrop :true, dropConfig: {appendOnly:true,allowParentInsert:false}, listeners:{ "contextmenu":function(node,e){ var menu = new Ext.menu.Menu([ {text:"上移",iconCls:'up',handler:function(){ var nodeUp = new Ext.tree.TreeNode(Ext.apply({}, node.attributes));; var previousNode = node.previousSibling; var pNode = node.parentNode; node.remove(); pNode.insertBefore(nodeUp,previousNode); } }, {text:"下移",iconCls:'down',handler:function(){ var nodeUp = new Ext.tree.TreeNode(Ext.apply({}, node.nextSibling.attributes));; var previousNode = node.previousSibling; var pNode = node.parentNode; node.nextSibling.remove(); pNode.insertBefore(nodeUp,node); } }, {text:"删除",iconCls:'right_delete',handler:function(){ node.parentNode.removeChild(node); } }, {text:"重命名",iconCls:'right_rename',menu:new Ext.menu.Menu({ items: [ new Ext.form.FormPanel({ title: '输入', frame: true, defaultType: 'textfield', labelWidth: 30, width:190, items: [{ fieldLabel: '名称', name: 'name' }], buttons: [{ text: '确认', //scope:this, handler:function(){ var s = this.findParentByType("form").form.findField("name").getValue(); node.setText(s); menu.hide(); } }, { text: '取消',handler:function(){ menu.hide(); } }] }) ] }) } ]); if(!node.previousSibling){ menu.items.item(0).disable(); } if(!node.nextSibling){ menu.items.item(1).disable(); } menu.showAt(e.getPoint()); } }//监听结束 }); // add the root node var root2 = new Tree.AsyncTreeNode({ text: 'Extensions', draggable:false, id:'ux', children: [ {text: '节点3',id:"node_3",zyid:"node_3",leaf: false,children: [ {text: '节点22',id:"node_22",zyid:"node_22",leaf: true} ]}, {text: '节点4',id:"node_4",zyid:"node_4",leaf: false,children: [ {text: '节点21',id:"node_2",zyid:"node_21",leaf: true} ]} ] }); tree2.on("beforenodedrop",function(e){ //alert( e.data.node.text );取得拖拽的node if(e.dropNode.getOwnerTree()==tree){ if(e.data.node.hasChildNodes()){ e.cancel=true; Ext.Msg.alert('系统提示', '不允许拖拽目录!'); }else{ var isAllowDrag = true; var parentNode = e.target; var parentNodeChild = parentNode.childNodes; for(var i = 0;i<parentNodeChild.length;i++){ if(parentNodeChild[i].attributes.zyid==e.dropNode.id){ isAllowDrag=false; break; } } if(isAllowDrag==true){ e.cancel=false; e.dropNode = e.dropNode.clone(); //追加回节点 e.dropNode.attributes.zyid = e.dropNode.id; e.dropNode.allowChildren=false; }else{ e.cancel=true; Ext.Msg.alert('系统提示', '此业务流程已经存在该节点!'); } } }; }) tree2.setRootNode(root2); tree2.render('tree2'); root2.expand(true, true);
自此结束 以上仅是本人的一个做法 或许麻烦 或许有更好的办法
发表评论
-
js原型分析研究
2012-07-23 22:44 1478原型是个很微妙的东西,很多人不是很理解,理解了原型对于 ... -
Ext4.1.0 API中文版V0.4 Beta(持续更新)
2012-07-17 18:40 1075Ext4.1.0 API中文版V0.4 Beta html ... -
记录回答别人的Ext4问题
2012-07-10 13:23 26781:Ext4版本 双击Tab页面页签关闭 来自问题:ht ... -
Extjs4 时分秒日期插件
2012-05-11 13:05 12392插件1: 初始界面 弹出界面 插件代码 见附件 ... -
Ext3 日期范围插件
2012-04-03 17:32 2158先上 效果图有图有真相嘛 使用例子: ... -
Extjs2分页树 带查询功能
2012-03-29 11:37 4213先上效果图: 插件代码见附件 使 ... -
ext2 日期范围控件(2个控件)
2012-03-25 17:39 3057控件1 介绍: 首先加入 Ext.apply( ... -
ext2 grid 封装 (包含增删改查 导入导出等操作)
2012-02-27 14:32 5046最近项目又用到ext 比较 ... -
ExtJS Web应用程序开发指南(第2版)(针对Ext JS 4.0更新)源代码
2011-08-11 14:56 1102ExtJS Web应用程序开发指南(第2版)(针对Ext JS ... -
通过拖拽Grid改变行的顺序
2010-10-08 13:06 3792<script> var meta ... -
使用注解和反射构造ext的grid需要的列模型
2010-09-18 12:03 1710注解类: package xzd; import ... -
ExtJs Grid分页时序号自增的实现
2010-08-23 16:28 3080首先看到网上都是类似 http://www.blogjava. ... -
extjs 自己的小小总结
2010-08-13 21:15 3332总结自己的代码 可能以后会用到 记录一下 方便以后查阅 1 ... -
eclipse 中怎样来集成 JBOSS
2010-08-09 08:46 0eclipse 中怎样来集成 JBOSS -
ext2,3,和4 版本 只显示年月的日期插件
2010-08-03 20:23 15754Ext技术交流群:164648099 1:ext3版本 ... -
关于Extjs3.0中的TreeGrid (Ext.ux.maximgb.tg.EditorGridPanel)(转)
2010-08-01 21:38 4392转:(http://www.liyonghome.cn/ind ... -
ext grid 单元格提示 出现图片
2010-07-31 00:03 2701代码简单 只是记录一下 <html> ... -
ext tree相关知识
2010-07-30 23:53 2643ext tree 动态修改各个节点名称icon小图标 &qu ... -
ext 后台查数据库数据拼装tree数据
2010-07-26 22:21 2511来自:Extjs交流群(164648099) 说明: ... -
ext grid刷新后 滚动条位置不变
2010-07-19 21:11 3025Ext.override(Ext.grid.GridView, ...
相关推荐
在这个场景下,我们将探讨如何利用Vue和IView实现一个具有拖拽和双击编辑功能的Tree组件。 首先,让我们了解一下`Tree`组件。在Web应用中,`Tree`组件通常用于展示层级关系的数据,如文件系统、组织结构等。IView中...
3. **拖拽功能**:用户可以通过鼠标拖动节点改变树形结构,这种功能在组织结构、任务分配或者文件管理场景下非常实用,允许用户自由调整数据层次关系。 4. **增、删、改功能**:组件支持添加新的子节点、删除节点...
以前有许多人需要将 tree 的节点拖拽到其他控件中的问题,前段时间已经解决了,现在也将它的源代码贡献上来。 这个树的数据是静态的,没有做动态的,而且树节点的拖拽也没有做过多的处理,如果要知道怎么样做树...
拖拽功能则为 Tree 提供了更丰富的交互性,让用户可以通过拖放操作来重新排列节点或移动节点到不同的位置,这在需要调整结构或分类数据的场景中非常有用。 在 Flex Tree 的拖拽操作中,主要涉及以下几个核心知识点...
总的来说,实现“easyui datagrid 拖拽到 tree”的功能,需要深入理解EasyUI组件的内部机制,熟悉拖放API,以及具备一定的JavaScript编程能力。通过以上步骤,我们可以创建一个交互性强、用户体验良好的应用,使得...
el-tree创建结构线,并且可拖动
本教程将详细介绍如何在Flex 4.5中实现Tree组件与任意组件之间的拖放操作,特别是将树形结构的数据拖拽到DataGrid中,并获取目标位置的全部数据进行添加。 1. **Flex 4.5的DragManager和DropTarget** Flex 4.5中的...
本代码在EasyUI官网原treegrid拖放demo的基础上进行详尽的注释,并加以改动,如今可以实现两个treegrid之间互相拖放,本代码分别可以进行“剪切”和“复制”的功能,当前使用的是“剪切”功能,可通过改变treegrid-...
"VC.drag.tree.control.design.rar"这个压缩包提供了一组代码资源,专门用于实现这样的功能。下面将详细介绍如何在VC++中设计和实现一个支持拖放操作的树形控件。 首先,我们需要理解拖放(Drag and Drop)的基本...
`DragSource`定义了可拖动的对象,而`DropTarget`则定义了可以接收拖动对象的目标区域。在TreePanel中,我们可以为每个节点实例化一个`DragSource`,并为整个TreePanel设置一个`DropTarget`。 第一个拖放例子可能...
将文件直接复制到layui/lay/modules目录下,会覆盖layui原有的tree.js,调用方法与layui树形组件的适应方式一致,新增的方法可在文件中查看
首先,"vue-sortable-tree"是一个专门用于Vue.js的树形组件库,它提供拖放排序功能,允许用户通过鼠标拖动节点来调整树形结构中的项目顺序。在安装这个库时,你可以通过npm(Node Package Manager)进行操作: ```...
- Vue.js社区中有多个成熟的树形组件库,如`element-ui`的Tree组件,`vuetify`的Treeview,以及本案例中的拖拽树组件。 3. **拖拽功能** - 拖拽功能是通过HTML5的`drag and drop` API实现的,该API允许用户通过...
在本文中,我们将探讨如何实现 Vue ElementUI Tree 组件的任意级别拖拽功能,这对于构建可自定义排序的层级结构数据展示非常有用。 在 ElementUI 的 Tree 组件中,`draggable` 属性用于开启拖拽功能,`allow-drop` ...
3. 用户反馈:为了提高用户体验,可以添加视觉反馈,如拖动时的高亮显示,以及拖放成功或失败的提示信息。 通过以上步骤,你可以在LabVIEW中实现对树形控件的拖曳放置和移动操作,从而增强你的应用程序的交互性和可...
在我使用tree拖拽时总是失败,控制台输出了很多错误。 经过跟踪分析发现这是一个由于特殊配置导致的错误。 原先错误的代码如下: $('#tree').tree({ //省略其他 loadFilter: function(data, parent){ return data....
MFC Tree Control是MFC框架中的一个重要组件,用于显示和管理具有层次结构的数据,类似于Windows资源管理器的左侧目录树。在本教程中,我们将深入探讨如何在MFC中实现Tree Control的拖放功能,这是一项扩展功能,...
在IT行业中,Flex Tree是一种常用于数据展示和交互的组件,尤其在构建用户界面时,它能够以树形结构清晰地展示层次数据。配合Checkbox(复选框)功能,可以提供用户选择或过滤数据的便利操作。"Flex Tree + Checkbox...
在本文中,我们将详细探讨如何在Flex的Tree组件中实现节点的拖放操作,并且限制可拖动的节点以及拖动的目标位置。 首先,我们需要了解Flex Tree组件的基本用法。Tree组件用于显示层次结构的数据,每个节点代表数据...
containment: "#treeMenu", // 只能在树形菜单内拖动 }); $("#treeMenu").droppable({ accept: "#treeMenu li", // 接受同级li元素 drop: function(event, ui) { var draggedNode = ui.draggable; // 被拖动的...