If you render content in the tree where one cell outputs data from another record in the tree, moving nodes in the tree will lead to a crash. Simple clear Fiesta case: http://fiestadev.bryntum.com/#237-ex...-reorder-issue

The problem is the UI is updated (via triggerUIUpdate) before the node is put back in the tree. From the treeStore point of view, the node should never be completely gone from the tree as it's not being removed - just moved.


Code:

Code:
Ext.define('Task', {
    extend : 'Ext.data.Model',
    fields : [
        {name : 'task', type : 'string'}
    ]
});

var store = Ext.create('Ext.data.TreeStore', {
    model      : 'Task',
    root : {
        expanded : true,
        children : [
            {
                "task": "Project: Shopping",
                "expanded": true,
                "children": [
                    {
                        "task": "Housewares",
                        "cls" : "target",
                        "expanded" : true,
                        "children": [
                            {
                                "task": "Kitchen supplies",
                                "leaf": true
                            }, {
                                "task": "Groceries",
                                "leaf": true                                
                            }
                        ]
                        
                    }
                ]
            },
            {
                "task": "Foo",
                "leaf": true
            }, {
                "task": "MOVE ME TO HOUSEWARES NODE",
                "leaf": true,
                "id" : 3,
                "cls" : "source"
            }
        ]
    }
});

//Ext.ux.tree.TreeGrid is no longer a Ux. You can simply use a tree.TreePanel
var tree = Ext.create('Ext.tree.Panel', {
    height      : 300,
    renderTo    : Ext.getBody(),
    store       : store,
    viewConfig: {
        plugins: {
            ptype: 'treeviewdragdrop'
        }
    },
    columns     : [
        {
            xtype     : 'treecolumn', //this is so we know which column will show the tree
            text      : 'Task',
            dataIndex : 'task'
        },
        {
            text      : 'Task',
            dataIndex : 'task',
            renderer  : function(v, m, task) {
                t.ok(store.getById(3), 'Should find 3rd node');
                // Here we want to output some data of the task with id 3
                return store.getById(3).data.Name;
            }
        }
    ]
});