0

我试图在 EXTJS 4 的树面板中移动节点。这些节点的位置存储在 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,因为它存储在数据库中,而不是实际节点本身。如果有人可以为我提供如何进行的指导,那就太好了。提前致谢。

4

1 回答 1

1

我认为您的 itemmove 参数签名不正确。4.1 的 API 文档说:

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

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

于 2012-06-11T16:51:15.193 回答