`
three_uncle
  • 浏览: 59708 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ExtJs Drag and Drop tree to grid

阅读更多

原文地址在这里,英语不太好,还是没看太明白。。点这里

 

代码如下:

 

dnd_tree_to_grid.js

 

Ext.onReady(function(){
	      var myData = {
	      	        records : [      
	      	              { name : "Rec 0", column1 : "0", column2 : "0" },            
	      	              { name : "Rec 1", column1 : "1", column2 : "1" },            
	      	              { name : "Rec 2", column1 : "2", column2 : "2" },            
	      	              { name : "Rec 3", column1 : "3", column2 : "3" },            
	      	              { name : "Rec 4", column1 : "4", column2 : "4" },            
	      	              { name : "Rec 5", column1 : "5", column2 : "5" },            
	      	              { name : "Rec 6", column1 : "6", column2 : "6" },            
	      	              { name : "Rec 7", column1 : "7", column2 : "7" },            
	      	              { name : "Rec 8", column1 : "8", column2 : "8" },            
	      	              { name : "Rec 9", column1 : "9", column2 : "9" }    
	      	                  ]  
	      	                    };    // Generic fields array to use in both store defs.    
	      var fields = [       
	      {name: 'name', mapping : 'name'},       
	      {name: 'column1', mapping : 'column1'},       
	      {name: 'column2', mapping : 'column2'}  
	        ];        // create the data store    
	      var firstGridStore = new Ext.data.JsonStore({     
	      	   fields : fields,        
	      	   data   : myData,        
	      	   root   : 'records'    
	      	   });        // Column Model shortcut array    
	      var cols = [     
	         { id : 'name', header: "Record Name", width: 160, sortable: true, dataIndex: 'name'},        
	         {header: "column1", width: 50, sortable: true, dataIndex: 'column1'},        
	         {header: "column2", width: 50, sortable: true, dataIndex: 'column2'}    
	         ];        // declare the source Grid  
	      var firstGrid = new Ext.grid.GridPanel({    
	      	    ddGroup          : 'secondTreeDDGroup',        
	      	    store            : firstGridStore,        
	      	    columns          : cols,        
	      	            //enableDragDrop   : false,        
	      	    stripeRows       : true,        
	      	    isTarget : true,        
	      	    autoExpandColumn : 'name',        
	      	    width            : 325,        
	      	    region           : 'west',        
	      	    title            : 'First Grid'    
	      	    });        
	      var root = new Ext.tree.AsyncTreeNode({    
	      	   text: 'main menu',       
	      	   draggable:false,       
	      	   id:'source'   
	     });       
	     var firstTree = new Ext.tree.TreePanel({   
	     	     autoScroll:true,        
	     	     animate:true,        
	     	     enableDD:true,        
	     	     ddGroup: 'secondTreeDDGroup',        
	     	     containerScroll: true,         
	     	     region : 'center',        
	     	     root: root,        
	     	     loader: new Ext.tree.TreeLoader({            
	     	     dataUrl:'multisel-data.json'        
	     	     })    
	     	     });    
	     var blankRecord =  Ext.data.Record.create(fields);    //Simple 'border layout' panel to house both grids    
	     var displayPanel = new Ext.Panel({    
	     	    width    : 650,        
	     	    height   : 300,        
	     	    layout   : 'border',        
	     	    renderTo : 'panel',        
	     	    items    : [       
	     	         firstGrid,            
	     	         firstTree    
	     	             ]    
	     	             });    
	     var secondGridDropTargetEl = firstGrid.getView().el.dom.childNodes[0].childNodes[1] 
	     var destGridDropTarget = new Ext.dd.DropTarget(secondGridDropTargetEl, {    
	     	    ddGroup    : 'secondTreeDDGroup',        
	     	    copy       : false,        
	     	    notifyDrop : function(ddSource, e, data){                    
	     	    	var record = new blankRecord({                        
	     	    		name     : ddSource.dragData.node.attributes.text,                        
	     	    		column1  : ddSource.dragData.node.attributes.id,                        
	     	    		column2  : ddSource.dragData.node.attributes.cls           
	     	    		         });                    
	     	    		   firstGridStore.add(record);       
	     	    		        return(true);               
	     	    		         }  
	     	    		           });
	     	     }); 

 

Html

 

 

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>MultiSelect &amp; ItemSelector</title>
    <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
    <script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="../extjs/ext-all-debug.js"></script>
    <script type="text/javascript" src="dnd_tree_to_grid.js"></script>
</head>
<body>
</body>
<div id="panel"></div>            <div id="contactspanel"></div>
</html>

 

 multisel-data.json

 

 

[{
    text:'Multiselection Example',
    id:'0',
    cls:'master-text',
    iconCls:'text-folder',
    children:[{
        text:'Abstract rendering in TreeNodeUI',
        leaf:true,
        iconCls:'text'
    },{
        text:'Create TreeNodeUI with column knowledge',
        leaf:true,
        iconCls:'text'
    },{
        text:'Create TreePanel to render and lock headers',
        leaf:true,
        iconCls:'text'
    },{
        text:'Add CSS to make it look fly',
        leaf:true,
        iconCls:'text'
    },{
        text:'Test and make sure it works',
        leaf:true,
        iconCls:'text'
    }]
}]

 

 

 

  • 大小: 44.5 KB
分享到:
评论
4 楼 kevin_zhm 2012-05-18  
大哥。不明白。如果是树做导航。能显示表格在右边?还要实现表格是填充了。
3 楼 blueyanghualong 2009-11-24  
2.0下面是可以的 3.0就报错了
2 楼 blueyanghualong 2009-11-23  
在IE下面不显示 只是报ext-all.js缺少对象
1 楼 blueyanghualong 2009-11-23  
哥们你这个demo 怎么托过以后Tree的节点还是存在啊  能不能让他不存在了。

相关推荐

    ExtJS4官方指南翻译:DragandDrop拖放/Grid组件/Tree组件/容器与布局

    在"ExtJS4官方指南翻译:DragandDrop拖放/Grid组件/Tree组件/容器与布局"中,我们将会探讨以下几个核心概念: 1. **Drag and Drop(拖放)**: ExtJS4提供了完善的拖放支持,允许用户通过鼠标操作在界面上移动元素...

    Ext中拖拽Tree2Grid , 清空表格拖拽失效的解决办法>.<

    首先,EXTJS的Tree组件和Grid组件提供了内置的拖放(Drag and Drop,简称D&D)支持。Tree组件通常用于展示层级结构的数据,而Grid组件则常用于展示表格数据。将Tree中的节点拖放到Grid中,可以实现数据的转移或关联...

    extjs tree 学习资料

    8. **拖放功能(Drag and Drop)** - 可以启用拖放功能,允许用户重新排列节点,使用`ddGroup`,`enableDragDrop`等配置项。 - 实现拖放需要扩展`Ext.dd.DragSource`和`Ext.dd.DropTarget`。 9. **自定义节点模板...

    extjs表格Grid比较全面的功能

    10. **拖放排序(Drag-and-Drop Sorting)** ExtJS Grid支持拖放功能,用户可以调整列顺序,或者将数据行拖动到不同的组或位置。 11. **组合列(Grouping Columns)** 数据可以按需分组,显示折叠/展开的层次结构...

    Extjs3.1.0

    9. **Drag & Drop**:框架支持拖放操作,可轻松实现组件间的交互。 10. **主题支持**:ExtJS 3.1.0提供多套皮肤,可以改变应用的整体外观。 总的来说,ExtJS 3.1.0为开发者提供了一套完整的工具集,用于创建功能...

    ExtJs3.0中文文档

    11. **拖放(Drag & Drop)**:内置的拖放API使得元素间拖放操作变得简单易用。 12. **AJAX请求(Ajax Request)**:通过Ext.Ajax对象,可以发送XMLHttpRequest请求,处理JSON、XML等多种数据格式。 13. **数据包...

    extjs.3.0中文API

    1. DND(Drag and Drop):支持元素拖放操作,可以创建复杂的拖放交互。 2. 动画(Animations):通过Ext.fx API实现平滑的动画效果。 3. 工具提示(Tooltips)和提示框(Tips):提供信息提示功能。 4. 国际化...

    Extjs3.0 pdf

    此外,文档可能还会讨论Ajax请求、数据绑定、布局管理(Layouts)以及拖放(Drag & Drop)功能。布局管理器允许开发者轻松地组织和调整组件的大小和位置,而拖放功能则增强了应用的交互性。 对于高级话题,如树形...

    extjs4.0整套开发工具

    4. **可拖放(Drag and Drop)**:增强了拖放功能,使得在界面上移动和排列组件变得更加简单。 5. **动画(Animations)**:EXTJS 4.0 加强了动画效果,允许开发者创建平滑的过渡和动画,提升用户体验。 6. **新组件...

    ExtJs3.1目前所有例子源代码

    - **Drag Source** 和 **Drop Target**:定义可拖动和接收拖动的元素,实现元素间的拖放操作。 8. **Ajax和数据通信** - **Ajax请求(Ext.Ajax)**:封装了XMLHttpRequest对象,提供异步发送和接收数据的API。 -...

    extjs2.0源文件

    7. **Drag and Drop**:EXTJS支持拖放操作,使得用户可以轻松地在组件之间移动元素,增强了交互性。 8. **Widgets and UI Components**:EXTJS提供了大量的预定义组件,如按钮、工具栏、菜单、提示框、进度条等,...

    extjs电子教材,开发extjs框架的好东西

    10. **拖放(Drag & Drop)**:EXTJS支持组件间的拖放操作,增强用户体验,实现更直观的交互。 本电子教材会详细介绍EXTJS的这些核心特性和使用方法,帮助开发者快速掌握EXTJS框架。对于初学者来说,学习EXTJS不仅...

    Ext实现的拖拽树和表格之间的拖拽

    实现拖拽功能,我们需要使用ExtJS提供的DD(Drag and Drop)API。DD API包括几个关键类,如DragSource、DropTarget、DDProxy等,它们协同工作以实现拖放行为。在树和表格之间进行拖拽,我们需要配置这两个组件以支持...

    很绚丽的EXTJS例子

    7. **Drag & Drop**:支持拖放操作,使得用户可以更直观地与界面交互。 8. **Window and Dialogs**:可以创建弹出窗口和对话框,用于显示独立的交互内容。 9. **Viewport**:EXTJS的视口组件可以根据浏览器窗口大小...

    extjs前端开发手册以及结构框架

    10. **Drag and Drop**: 支持拖放操作,便于构建具有交互性的应用,如文件管理器等。 EXTJS的前台开发部分通常涉及以下步骤: 1. **项目初始化**: 使用EXTJS的命令行工具(Sencha CMD)生成项目结构,包括基本的...

    ExtJS in Action

    8. **拖放与小部件(Drag and Drop with Widgets)** - 拖放是一种直观的交互方式,允许用户通过鼠标将对象从一个位置移动到另一个位置。小部件是指可以被拖放的组件。 #### 四、面向对象编程与复合组件 **部分内容...

    extjs in action

    拖放(Drag and Drop)是一种直观的用户交互方式,ExtJS的小部件(Widget)提供了实现这一功能的机制,允许用户通过拖动对象来完成各种操作,如重新排序列表项或移动组件位置。 ### 4. 构建可配置的复合组件 书中还...

    EXTJS 3 中文API手册

    7. **拖放(Drag & Drop)功能**:EXTJS 3实现了标准的HTML5拖放API,可以轻松创建可拖放的组件,增强了用户交互体验。 8. **树形(Tree)组件**:EXTJS 3的树形组件允许展示和操作层次结构的数据,支持节点的展开...

    ExtJs3.0中文API

    - **Drag & Drop**: 支持元素的拖放操作,可应用于列表、树等组件。 - **ToolTips**: 提示框组件,用于显示鼠标悬停时的额外信息。 - **Ajax Grid**: 支持从服务器动态加载数据的网格组件。 - **Charts**: 图表...

    Ext中文API + sample

    例如,可能会有展示如何创建一个基本的网格(Grid)来显示和编辑数据,如何实现拖放操作(Drag and Drop),如何使用图表(Charts)进行数据可视化,或是如何自定义组件(Component)来满足特定需求。通过这些实例,...

Global site tag (gtag.js) - Google Analytics