<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script type="text/javascript" src=" Ext/ext.ux.tree.ArrayTree.js"></script>
<title></title>
<style type="text/css">
#grid-example {width: 100%;height: 100%;}
</style>
<script language="javascript">
var tree;
$(document).ready(function(){
var Tree = Ext.tree;
tree = new Tree.TreePanel({
el:'tree_div',
autoScroll:true,
animate:true,
enableDD: true,
border:false,
ddGroup: "GridDD",
containerScroll: true,
loader: new Tree.TreeLoader({
dataUrl : '$!{basePath}/loadView.do?viewName=report/tree.json'
})
});
var root = new Tree.AsyncTreeNode({
text: 'RDM报表分组',
draggable:false,
id:'source'
});
tree.setRootNode(root);
tree.on('beforenodedrop',function(dropEvent){
var node = dropEvent.target; // 目标结点
var data = dropEvent.data; // 拖拽的数据
var point = dropEvent.point; // 拖拽到目标结点的位置
alert("point:"+point);
if(!data.node) {
switch(point) {
case 'append':
// 添加时,目标结点为node,子结点设为空
inserTreeNode(node, null, data.selections);
break;
case 'above':
// 插入到node之上,目标结点为node的parentNode,子结点为node
inserTreeNode(node.parentNode, node, data.selections);
break;
case 'below':
// 插入到node之下,目标结点为node的parentNode,子结点为node的nextSibling
inserTreeNode(node.parentNode, node.nextSibling, data.selections);
break;
}
}
});
// render the tree
tree.render();
root.expand();
//tree.on('contextmenu', menuShow);
createRptList();
//createFormList();
});
function menuShow ( node )
{
treeRightMenu.show(node.ui.getAnchor());
node.select();//让右击是选中当前节点
};
function inserTreeNode (node, refNode, selections) {
for(var i = 0; i < selections.length; i ++) {
var record = selections[i];
alert(record.get('text'));
tree.appendChild(new Tree.AsyncTreeNode({text:'dd',id:'11'}));
// node.insertBefore(new Tree.AsyncTreeNode({
// text: record.get('text'),
// id: record.get('id'),
// leaf: record.get('leaf'),
// cls: record.get('cls')
// }), refNode);
}
}
function createRptList(){
// grid的数据源
var data = [
['VIP用户投诉', 211, true, 'file'],
['12', 212, true, 'file'],
['13', 213, true, 'file'],
['14', 214, true, 'file'],
['15', 215, true, 'file'],
['16', 221, true, 'file'],
['17', 222, true, 'file'],
['18', 223, true, 'file'],
['19', 224, true, 'file'],
['20', 225, true, 'file']
];
var store = new Ext.data.Store({
reader: new Ext.data.ArrayReader({}, [
{name: 'text'},
{name: 'id'},
{name: 'leaf'},
{name: 'cls'}
])
});
store.loadData(data);
// 建一个grid,并设置到tgDD拖拽组中
var Grid = Ext.grid;
var model = new Grid.ColumnModel([
{header: "text", sortable: true, dataIndex: 'text'},
{id:'id', header: "id", sortable: true, dataIndex: 'id'},
{header: "leaf", sortable: true, dataIndex: 'leaf'},
{header: "cls", sortable: true, dataIndex: 'cls'}
]);
var grid = new Grid.GridPanel({
renderTo: 'grid',
ds: store,
cm: model,
sm: new Grid.RowSelectionModel(),
autoHeight: true,
enableDragDrop: true,
ddGroup: "GridDD"
});
}
function createFormList(){
var msForm = new Ext.form.FormPanel({
renderTo: 'multiselect',
title:'dddddddddd',
items:[{
xtype: 'multiselect',
fieldLabel: 'Multiselect<br />(Required)',
name: 'multiselect',
width: 250,
height: 200,
allowBlank:false
}]
});
}
</script>
</head>
<body>
<div id="multiselect"></div>
<table>
<tr>
<td><div id="tree_div" style="overflow:auto; height:300px;width:300px;border:1px solid #c3daf9;"></div></td>
<td><div id="grid" style="overflow:auto; height:300px;width:450px;"></div></td>
</tr>
</table>
</body>
</html>
分享到:
相关推荐
本文将深入探讨一个具体的使用场景——如何实现从Tree组件到Grid组件的拖拽功能,并解决在清空Grid后拖拽功能失效的问题。这个问题在实际开发中可能会遇到,尤其是在需要动态管理数据的界面中。 首先,EXTJS的Tree...
通过对Ext JS中树(Tree)和表格(Grid)控件拖拽功能的研究,我们可以看到其实现的核心在于正确配置拖动源和目标对象的相关属性,并利用`DragSource`和`DropTarget`这两个关键类来实现整个拖拽流程。掌握了这些原理和...
在"ExtJS4官方指南翻译:DragandDrop拖放/Grid组件/Tree组件/容器与布局"中,我们将会探讨以下几个核心概念: 1. **Drag and Drop(拖放)**: ExtJS4提供了完善的拖放支持,允许用户通过鼠标操作在界面上移动元素...
这个设计器可能使用了`Ext.grid.Panel`或`Ext.tree.Panel`来展示可用的控件库,而工作区则使用了某种布局管理器来处理控件的放置。 为了实现控件的拖放,开发者通常还需要处理一些细节,例如: 1. **阻止默认...
在本文中,我们将深入探讨如何使用ExtJS框架实现拖拽功能,特别是在树形视图(Tree)和表格视图(Grid)之间的交互。ExtJS是一个强大的JavaScript库,它提供了丰富的用户界面组件,包括可拖拽的元素,这使得在Web...
根据提供的信息,我们可以深入探讨Ext JS中的拖动功能,特别是针对树(Tree)和表格(Grid)的拖动操作。本文将详细介绍这些概念和技术要点。 ### 一、Ext JS 拖动的基本概念 #### 1.1 拖动源与目标 在Ext JS中,拖动...
Ext TreeGrid是一款在Ext JS框架下开发的组件,它结合了Tree和Grid的优点,提供了一种既能展示层次结构数据又能进行表格样式的显示和操作的视图。在Ext JS库中,Tree通常用于展现层级关系的数据,而Grid则用于显示二...
再加上可编辑grid,添加新行,删除一或多行,提示多行数据,拖拽改变grid大小,grid之间拖拽一或多行,甚至可以在tree和grid之间进行拖拽,啊,这些功能实在太神奇了。更令人惊叹的是,这些功能竟然都在ext表格控件...
2.11.2. 再看怎么在表格里拖动行 2.11.2.1. 无用功 之 同一个表格里拖拽 2.11.2.2. 无间道 之 从这个表格拖到另一个表格 2.11.2.3. 无疆界 之 从表格里拖到树上 2.12. 大步流星,后台排序 2.13. grid与右键菜单 3. ...
再加上可编辑grid,添加新行,删除一或多行,提示脏数据,推拽改变grid大小,grid之间拖拽一或多行,甚至可以在tree和grid之间进行拖拽,啊,这些功能实在太神奇了。更令人惊叹的是,这些功能竟然都在ext表格控件里...
再加上可编辑grid,添加新行,删除一或多行,提示脏数据,推拽改变grid大小,grid之间推拽一或多行,甚至可以在tree和grid之间进行拖拽,啊,这些功能实在太神奇了。更令人惊叹的是,这些功能竟然都在ext表格控件...
9.2. 带全选的checkbox树形CheckBoxTree 9.3. 带全选的checkbox的grid 9.4. fisheye 9.5. 可以设置时间的日期控件 9.6. JsonView实现用户卡片拖拽与右键菜单 9.7. 下拉列表选择每页显示多少数据 10. 撕裂吧!...
7.5.11 树节点:ext.data.nodeinterface与ext.data.tree / 364 7.5.12 store的方法 / 366 7.5.13 store的事件 / 368 7.5.14 store管理器:ext.data.storemanager / 369 7.6 综合实例 / 369 7.6.1 远程读取json...
var tree = new Ext.tree.TreePanel({ layout: "fit", title: "管理文档</center>", split: true, width: 200, height: 650, animate: false, enableDD: true, collapsible: true, autoScroll: true, root...
通过EXT组件grid+tree+window.docx文档,你可以学习到如何在EXTJS中集成这三个组件,以及如何与后台SSM框架协作。运行截图.png可能展示了这些组件实际运行的效果。role文件可能包含了角色和权限的相关配置信息。学习...
再加上可编辑grid,添加新行,删除一或多行,提示脏数据,推拽改变grid大小,grid之间推拽一或多行,甚至可以在tree和grid之间进行拖拽,啊,这些功能实在太神奇了。更令人惊叹的是,这些功能竟然都在ext表格控件...
ExtJS Grid支持拖放功能,用户可以调整列顺序,或者将数据行拖动到不同的组或位置。 11. **组合列(Grouping Columns)** 数据可以按需分组,显示折叠/展开的层次结构,方便用户查看和操作数据。 12. **树形Grid...
var grid = new Ext.grid.GridPanel({ renderTo: "hello", title: "NetJava表格测试", height: 150, width: 600, columns: [ { header: "项目名称", dataIndex: "name" }, { header: "开发团队", dataIndex:...
可以把grid直接拖到tree,不同于其他的例子,拖动grid后会在tree中加一个叶子节点,大家试下就会明白。 自己练习用的哦,做的不好不要骂我,哪里不好希望大家包涵。 本人qq :784027965 大家学习happy哈^_^
再加上可编辑grid,添加新行,删除一或多行,提示多行数据,拖拽改变grid大小,grid之间拖拽一或多行,甚至可以在tree和grid之间进行拖拽,啊,这些功能实在太神奇了。更令人惊叹的是,这些功能竟然都在ext表格控件...