extjs 4 grid to tree拖放

时间:2011-09-03 18:32:05

标签: drag-and-drop tree grid extjs4

我正在使用网格到树的拖放。我能够通过从网格中拖动它来将新节点添加到树的根,但我不知道如何将子节点添加到我悬停在的节点上?我花了2天的时间,但没有运气。我的代码是:

  Ext.define('Overdrive.view.ui.MyViewport', {
        extend: 'Ext.container.Viewport',
        initComponent: function () {
            var me = this;
            me.items = [{
                xtype: 'panel',
                height: 600,
                layout: {
                    align: 'stretch',
                    type: 'hbox'
                },
                title: 'PARENT',
                items: [{
                    xtype: 'treepanel',
                    border: '',
                    id: 'treepanel',
                    collapseDirection: 'left',
                    collapsible: true,
                    title: 'Items',
                    titleCollapse: true,
                    store: 'Test',
                    flex: 1,
                    viewConfig: {
                        listeners: {
                            render: function (tree) {
                                var dropTarget = new Ext.dd.DropTarget(tree.el, {
                                    ddGroup: 'gridtotree',
                                    copy: false,

                                    notifyDrop: function (dragSource, event, data) {
                                        var idFrom = data.records[0].data.name;
                                        var node = Ext.getCmp('treepanel').getRootNode(); //working
                                        node.appendChild({
                                            'text': idFrom,
                                            'children': []
                                        });


                                    }
                                });
                            }
                        }
                    }
                }, {
                    xtype: 'panel',
                    height: 596,
                    flex: 3,
                    items: [{
                        xtype: 'panel',
                        height: 285,
                        layout: {
                            type: 'anchor'
                        }
                    }, {
                        xtype: 'gridpanel',
                        id: 'itemtypegrid',
                        title: 'Item Type',
                        store: 'GridTest',
                        enableDragDrop: true,
                        ddText: 'Shift Row',
                        columns: [{
                            xtype: 'gridcolumn',
                            width: 100,
                            dataIndex: 'name',
                            text: 'Name'
                        }],
                        viewConfig: {
                            plugins: [
                            Ext.create('Ext.grid.plugin.DragDrop', {
                                ddGroup: 'gridtotree',
                                enableDrop: true
                            })]
                        }
                    }]
                }]
            }];
            me.callParent(arguments);
        }

1 个答案:

答案 0 :(得分:0)

要捕获树节点,您可以将此处理程序添加到Tree.Panel - > ViewConfig - >监听器:

itemmouseenter: function (view, model, htmlItem, index, e)
{
 console.log(model);
},

您可以保存此值并在另一个处理程序中使用 - notifyDrop