<script type="text/javascript">
var Tree = Ext.tree;
var tree = null;
Ext.onReady(function(){
tree = new Tree.TreePanel({
el:'tree-div',
onlyLeafCheckable:false,
rootVisible: true,
autoScroll:true,
animate:false,//是否动画
enableDD:true,// 是否支持拖放
containerScroll:true,
lines:true,
checkModel:'cascade',
loader:new Tree.TreeLoader({dataUrl:"json.jsp",
baseAttrs: {uiProvider: Ext.tree.TreeCheckNodeUI}
})
});
// set the root node
var root = new Tree.AsyncTreeNode({
text: '常量科目维护',
id:'root'
});
//绑定节点追加事件
tree.on('append', function(tree, node){
//if(node.id == 'foo'){
// alert("append");
// }
});
//绑定节点切换事件
tree.getSelectionModel().on('selectionchange', function(sm, node){
// alert("selectionchange");
});
//绑定节点点击事件
tree.on('click', function(node){
if(node.id!='root'){
alert(node.id);
alert(node.text);
}
});
//绑定节点加载之前事件
tree.on('beforeload',function(node){
if(node.id!='root'){
// alert("beforeload");;
}
});
//绑定节点右键菜单功能
tree.on('contextmenu',function(node,event){
// alert("node.id="+ node.id);
event.preventDefault(); //这行是必须的
rightClick.showAt(event.getXY());//取得鼠标点击坐标,展示菜单
});
//绑定节点拖动事件,找了很久树节点拖动的实现,终于在老外的帖子发现上了这个实现,拖动以后所需的信息已经捕获,与后台联动的函数 加上即可实现TREE的拖拽
function handleMoveNode(tree, node, oldParent, newParent, index) {
alert("鼠标拖拽事件");
alert("node.attributes.id = " + node.attributes.id +"\n" + "node.parentNode.attributes.id = " + node.parentNode.attributes.id )
alert("newParent.attributes.id = " + newParent.attributes.id);
alert("oldParent.attributes.id = " + oldParent.attributes.id);
}
tree.addListener('movenode', handleMoveNode);
tree.addListener('beforemovenode', function(t,node,oldParent,newParent,i) {
if(oldParent.id == newParent.id ) {
alert("Re-ordering not supported");
return false;
}
});
//定义右键菜单
var rightClick = new Ext.menu.Menu({
id :'rightClickCont',
items : [{
id:'rMenu1',
text : '菜单1',
//增加菜单点击事件
handler:function (){
alert('我被点击了!');
}
}, {
id:'rMenu2',
text : '菜单2'
}, {
id:'rMenu3',
text : '菜单3'
}]
});
tree.setRootNode(root);
// render the tree
tree.render();
root.expand();
});
</script>
分享到:
相关推荐
- 表格控件(Grid)是ExtJS的核心组件之一,用于展示二维表格数据。它提供了排序、分页、过滤、编辑等功能,可高度定制化。 - Grid可以与各种数据源结合,如Store对象,用于管理数据的加载、更新和存储。 3. **...
标题 "extjs把数据导出至excel" 涉及的是使用ExtJS 3这个JavaScript框架将数据导出到Excel文件的技术。ExtJS是一个用于构建Web应用的前端库,提供了丰富的组件和API,使得在浏览器端处理数据变得更加方便。在这个...
### Extjs、Jquery、Dhtmlxtree之上树的区别及方法变更详解 #### 一、概述 本篇文章主要探讨了三种流行的JavaScript库——Extjs、Jquery、Dhtmlxtree中实现树形结构(Tree)的方法及其差异。树形结构在用户界面...
- Model是Extjs中用于存储和管理数据的核心对象之一。 - 定义字段(field)、验证规则(validation)以及数据关联关系。 - 如何创建、加载和保存Model实例。 - **实战演练**: - 演示如何定义Model结构,并通过JSON...
- **按钮(Button)**:用于触发事件的动作控件。 - **网格(Grid)**:展示表格数据,支持排序、筛选等功能。 - **表单(Form)**:用于收集用户输入的信息,支持验证规则的定义。 - **树(Tree)**:显示层次结构...
4. **事件监听**: 为了实现动态加载,需要监听树的`beforeexpand`或`expand`事件,当触发这些事件时,加载对应节点的数据。 5. **服务器端配合**: 服务器端需要提供API接口,接收并返回树形结构的JSON数据。返回的...
通过分析系统的各个组成部分,我们将揭示EXTJS在实现这种业务系统中的核心技术和最佳实践。 首先,EXTJS的MVC模式在图书管理系统中起着关键作用。Model负责数据的获取、存储和验证,View用于用户界面的展示,...
EXTJS中的Column Tree控件是将传统的树形视图与表格列数据相结合,用户不仅可以浏览数据的层次结构,还可以通过表格形式查看每个节点的详细信息。这种控件特别适用于展现具有层次关系的数据,例如组织结构、文件系统...
5. **事件处理**:EXTJS基于事件驱动模型,每个组件都可以触发和监听事件。通过`Ext.ComponentQuery`选择器和`Ext.Component`的事件监听方法,开发者可以实现组件间的交互。示例中可能包含如何绑定事件处理函数的...
国讯OA的一个强大之处就是在于它可以让系统在运作的过程中自动触发请求,并且还可以根据前一个请求的实际状况对下一个触发的请求进行智能选择。 6、分支选择流 根据上一步的选择,选择不同的分支进行流程执行。如...
5. **事件处理**:EXTJS的事件监听和触发机制,以及如何利用DWR事件在客户端和服务器端之间同步状态。 6. **安全性考虑**:使用DWR时的安全策略,如防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。 7. **性能...
在IT领域,特别是Web开发中,拖拽功能已经成为一种常见的交互设计,用于提高用户体验和界面的易用性。本文将详细探讨如何使用ExtJS库实现拖拽树(Drag...通过分析"WebTree1"中的代码,你可以进一步学习和优化这种实现。
这通常涉及到事件监听、数据加载和视图更新等技术。 3. **实现方式**: - **事件监听**:首先,我们需要监听用户的交互事件,如按钮点击或菜单选择,以触发面板的切换。 - **数据管理**:数据可以从服务器动态...
- **事件处理**:理解事件监听和触发机制,提升组件间的交互性。 - **数据管理**:掌握Store和Model的使用,以及如何与远程服务器进行数据交换。 - **主题和皮肤**:了解如何自定义和应用主题,以改变应用的外观...
- **SVGComponent 预定义事件**:列出了 SVGComponent 支持的默认事件类型及其触发条件。 - **SVGComponent 鼠标键盘和触控交互**:讲解了如何通过 SVGComponent 实现用户与界面之间的交互。 - **前台 DataBox**...
综上所述,“父节点选中自动选中其相应的子节点”的功能实现不仅涉及到树形结构的基本概念,还涉及到事件监听、对象属性操作等技术细节。解决`node.attributes is undefined`问题的关键在于确保节点对象的有效性和...
- **操作方法**:通过Element可以获取、修改DOM节点,执行动画效果,触发事件等。 #### 5. 获取多个DOM的节点 - **获取方法**:介绍了如何使用EXT提供的API来获取页面上的多个DOM节点。 - **应用场景**:适用于需要...