EXTJS 4树拖放

时间:2012-06-11 15:00:51

标签: extjs extjs4

尝试在EXTJS 4中的Tree面板中移动节点。这些节点的位置存储在SQL数据库中。当我移动节点时应该发生的是,这些节点的id应该在数据库中被更改,具体取决于树上的位置。到目前为止,我已经设法只获取父节点的id,而不是实际的节点本身。我不明白为什么会这样。每次移动节点时,它都会返回父节点的id。代码如下:

function buildTree() {

consoleWrite('BUILD THE TREE!!!');

var tree = Ext.create('Ext.tree.Panel', {
    title : '',
    border : false,
    height : SYSTEM.panelHeight,
    viewConfig : {
        listeners : {

        },
        enableDD : true,
        plugins : {
            ptype : 'treeviewdragdrop'
        }
    },
    collapsible : false,
    useArrows : true,
    rootVisible : false,
    store : TREEst,
    multiSelect : false,
    singleExpand : true,
    id : 'PAGETREE',
    listeners : {
        afterRender : function() {
            MASK.tree.hide();
        },
                itemmove : {
            fn : function(v, node, oldParent, newParent, index) {
                  var nodeID = node.data.id;
                                     alert(nodeID);
            }
        }

此nodeID正在打印父节点的id,因为它存储在数据库中,而不是实际节点本身。如果有人能为我提供如何进行的指导,那将是非常好的。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我不认为你的itemmove params签名是正确的。 4.1的API文档说:

itemmove( Ext.data.NodeInterface this, Ext.data.NodeInterface oldParent, Ext.data.NodeInterface newParent, Number index, Object eOpts )

所以你的节点实际上是指oldParent。