На ExtJS перетаскивание дерева с использованием перетаскивания или прослушивания beforedrop не похоже - PullRequest
2 голосов
/ 23 июня 2011

У меня есть дерево в extjs.Я добавил плагин перетаскивания, и они отлично работают в браузере, но мне нужно правильно отправить перетащенное изменение в мою БД?Чтобы сделать это, я считаю, что мне нужно прослушать событие drop, а затем сделать ajax-вызов для моего бэкенда.У меня есть событие checkchange, которое срабатывает нормально, но, похоже, что drop или beforedrop ничего не делают.

Вот конфигурация моего дерева, что я делаю не так?

todotree = {
    title: 'Tree Grid',
    width: 600,
    height: 400,
    viewConfig: {
        plugins: {
            ptype: 'treeviewdragdrop'
        }
    },
    store: new Ext.data.TreeStore({
        storeId: 'treestore',
        fields: [{
            name: 'actionTitle',
            type: 'string'
        }],
        proxy: {
            type: 'ajax',
            url: 'index.php/todo/listtree',
            reader: 'json'
        }
    }),
    rootVisible: false,
    columns: [
    {
        xtype: 'treecolumn',
        text: 'Title',
        flex: 3,
        dataIndex: 'actionTitle'
    }],
    listeners: {
        checkchange: function(node, checked){
            Ext.Ajax.request({
                url: 'index.php/todo/togglecheck/' + node.data.recordId + '/' + checked,
                success: function() {}
            });
        },
        drop: function(){ alert("drop") },
        beforedrop: function(){ alert("beforedrop") }
    }
}

Заранее спасибо

РЕДАКТИРОВАТЬ: Я также пытался этот конфиг, но безрезультатно.Я не думаю, что понимаю, как все это должно работать.

...
    beforedrop: function(node, data, overModel, dropPosition, dropFunction){
        alert("beforedrop");

        dropFunction = function(){
            alert('dropFunction');
        };
    }
...

1 Ответ

5 голосов
/ 26 июня 2011

Эти события запускаются TreeView, и вы добавляете слушателей на Panel.Это должно работать:

todotree = {...
    viewConfig: {
        listeners: {
            beforedrop: function () {}
        }
    }
}
...