拖拽是一个提升用户体验的一个特色功能,虽然不是必需的,但如果添加上此功能,必然就立马变得高大上了,有木有。Grid与Grid之间的数据拖拽是由gridviewdragdrop插件,官方源码已经内置了该插件,无须自己实现,进行一些简单配置就完事儿了。下面是示例代码:
- Ext.require([
- 'Ext.grid.*',
- 'Ext.data.*',
- 'Ext.dd.*'
- ]);
- Ext.define('DataObject', {
- extend: 'Ext.data.Model',
- fields: ['name', 'column1', 'column2']
- });
- Ext.onReady(function(){
- var myData = [
- { 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" }
- ];
- // create the data store
- var firstGridStore = Ext.create('Ext.data.Store', {
- model: 'DataObject',
- data: myData
- });
- // Column Model shortcut array
- var columns = [
- {text: "Record Name", flex: 1, sortable: true, dataIndex: 'name'},
- {text: "column1", width: 70, sortable: true, dataIndex: 'column1'},
- {text: "column2", width: 70, sortable: true, dataIndex: 'column2'}
- ];
- // declare the source Grid
- var firstGrid = Ext.create('Ext.grid.Panel', {
- viewConfig: {
- plugins: {
- ptype: 'gridviewdragdrop',
- dragGroup: 'firstGridDDGroup',
- dropGroup: 'secondGridDDGroup'
- },
- listeners: {
- drop: function(node, data, dropRec, dropPosition) {
- var dropOn = dropRec ? ' ' + dropPosition + ' ' + dropRec.get('name') : ' on empty view';
- Ext.example.msg("Drag from right to left", 'Dropped ' + data.records[0].get('name') + dropOn);
- }
- }
- },
- store : firstGridStore,
- columns : columns,
- stripeRows : true,
- title : 'Grid-1',
- margins : '0 2 0 0'
- });
- var secondGridStore = Ext.create('Ext.data.Store', {
- model: 'DataObject'
- });
- var secondGrid = Ext.create('Ext.grid.Panel', {
- viewConfig: {
- plugins: {
- ptype: 'gridviewdragdrop',
- dragGroup: 'secondGridDDGroup',
- dropGroup: 'firstGridDDGroup'
- },
- listeners: {
- drop: function(node, data, dropRec, dropPosition) {
- var dropOn = dropRec ? ' ' + dropPosition + ' ' + dropRec.get('name') : ' on empty view';
- Ext.example.msg("Drag from left to right", 'Dropped ' + data.records[0].get('name') + dropOn);
- }
- }
- },
- store : secondGridStore,
- columns : columns,
- stripeRows : true,
- title : 'Grid-2',
- margins : '0 0 0 3'
- });
- var displayPanel = Ext.create('Ext.Panel', {
- width : 650,
- height : 300,
- layout : {
- type: 'hbox',
- align: 'stretch',
- padding: 5
- },
- renderTo : 'panel',
- defaults : { flex : 1 },
- items : [
- firstGrid,
- secondGrid
- ],
- dockedItems: {
- xtype: 'toolbar',
- dock: 'bottom',
- items: ['->',
- {
- text: '重置两个Grid',
- handler: function(){
- firstGridStore.loadData(myData);
- secondGridStore.removeAll();
- }
- }]
- }
- });
- });
示例截图:
接下来打算研究下treePanel的节点拖拽。
代码请在附件里下载。如有疑问,请加裙咨询
转载:http://iamyida.iteye.com/blog/2190441