我想在ExtJS TreeGrid中实现拖放节点。我可以填充TreeGrid,但不知道如何处理拖放。这是我的ExtJS代码填充TreeGrid:
Ext.require([
'Ext.data.*',
'Ext.grid.*',
'Ext.tree.*'
]);
Ext.onReady(function () {
Ext.define('Task', {
extend: 'Ext.data.Model',
fields: [
{ name: 'task', type: 'string' },
{ name: 'assignedto', type: 'string' }
]
});
var store = Ext.create('Ext.data.TreeStore', {
model: 'Task',
proxy: {
type: 'ajax',
url: 'treegrid.json'
},
folderSort: false
});
var tree = Ext.create('Ext.tree.Panel', {
title: 'Core Team Projects',
width: 500,
height: 300,
renderTo: Ext.getBody(),
collapsible: true,
useArrows: true,
rootVisible: false,
store: store,
multiSelect: true,
singleExpand: true,
columns: [{
xtype: 'treecolumn',
text: 'Task',
flex: 2,
sortable: true,
dataIndex: 'task'
}, {
text: 'Assigned To',
flex: 1,
dataIndex: 'assignedto',
sortable: true
}]
});
以下是示例JSON数据:
{"text":".","children": [
{
task:'Task: R&D',
assignedto:'Reserved Team',
iconCls:'task-folder',
expanded: true,
children:[{
task:'Grid',
duration:1.25,
assignedto:'Gopal Kanjoliya',
iconCls:'task-folder',
children:[{
task:'Create',
duration:0.25,
assignedto:'Gopal Kanjoliya',
leaf:true,
iconCls:'task'
},{
task:'Read',
duration:.4,
assignedto:'Gopal Kanjoliya',
leaf:true,
iconCls:'task'
}]
}, {
task:'Tree',
duration:12,
assignedto:'Gopal Kanjoliya',
iconCls:'task-folder',
expanded: true,
children:[{
task:'Add Node',
duration: 2.75,
assignedto:'Gopal Kanjoliya',
iconCls:'task-folder',
children: [{
task: 'Delete',
duration: 1.25,
assignedto: 'Gopal Kanjoliya',
iconCls: 'task',
leaf: true
}]
},{
task:'Form',
duration:2.75,
assignedto:'Gopal Kanjoliya',
leaf:true,
iconCls:'task'
}]
}]
},{
task:'Task: Implementation',
duration:2,
assignedto:'Development Team',
iconCls:'task-folder',
children:[{
task: 'Forms',
duration: 0.75,
assignedto: 'Gopal Kanjoliya',
iconCls: 'task-folder',
children: [{
task: 'Grids',
duration: 0.25,
assignedto: 'Gopal Kanjoliya',
iconCls: 'task',
leaf: true
}]
},{
task: 'Components',
duration: 3.75,
assignedto: 'Shyam Dhanotiya',
iconCls: 'task-folder',
children: [{
task: 'Panels',
duration: 0.25,
assignedto: 'Shyam Dhanotiya',
iconCls: 'task',
leaf: true
}]
},{
task: 'Test',
duration: 0.5,
assignedto: 'Snehil Chaturvedi',
iconCls: 'task-folder',
children: [{
task: 'Manual',
duration: 0.25,
assignedto: 'Snehil Chaturvedi',
iconCls: 'task',
leaf: true
}]
}]
}
]}
答案 0 :(得分:0)
ExtJS有一个很好的插件: http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.tree.plugin.TreeViewDragDrop 阅读配置文件,它们非常重要且有用
将它放在你的treepanel的代码中:
viewConfig: {
plugins: {
ptype: 'treeviewdragdrop'
}
},
此外,这是一个工作小提琴 我只是在商店里放了一些随机数据,不想格式化你的所有数据
Ext.onReady(function () {
Ext.define('Task', {
extend: 'Ext.data.Model',
fields: [
{ name: 'task', type: 'string' },
{ name: 'assignedto', type: 'string' }
]
});
var store = Ext.create('Ext.data.TreeStore', {
model: 'Task',
folderSort: false,
root: {
expanded: true,
children: [
{
task: 'Child 1',
assignedto: 'me',
leaf: true
},
{
task: 'Child 2',
assignedto: 'me',
expanded: true,
children: [
{
task: 'GrandChild 1',
assignedto: 'you',
leaf: true
}
]
},
{
task: 'Child 3',
assignedto: 'me',
expanded: true,
children: [
{
task: 'GrandChild 2',
assignedto: 'you',
leaf: true
}
]
},
]
}
});
var tree = Ext.create('Ext.tree.Panel', {
viewConfig: {
plugins: {
ptype: 'treeviewdragdrop'
}
},
title: 'Core Team Projects',
width: 500,
height: 300,
renderTo: Ext.getBody(),
collapsible: true,
useArrows: true,
rootVisible: false,
store: store,
multiSelect: true,
singleExpand: true,
columns: [{
xtype: 'treecolumn',
text: 'Task',
flex: 2,
sortable: true,
dataIndex: 'task'
}, {
text: 'Assigned To',
flex: 1,
dataIndex: 'assignedto',
sortable: true
}]
});
});