Определить целевой триод при перетаскивании элементов в экземпляр TreePanel - PullRequest
0 голосов
/ 25 января 2010

У меня есть экземпляры GridPanel и TreePanel. Элементы из GridPanel можно перетаскивать в панель дерева. Но я не могу определить, какой узел дерева получает эти перетаскиваемые элементы.

Я инициализирую панель дерева DD следующим кодом (метод класса, полученный из Ext.tree.TreePanel):

initDD: function() {
    var treePanelDropTargetEl = this.getEl();
    var treePanelDropTarget = new Ext.dd.DropTarget(treePanelDropTargetEl, {
        ddGroup: 'ddgroup-1',
        notifyDrop: function(ddSource, e, data) {
            // do something with data, here I need to know target tree node
            return true;
        }
    });
}

Так как я могу узнать, какой узел дерева получил перетаскиваемые элементы в обработчике notifyDrop. Я могу взять e.getTarget () и вычислить узел, но мне не нравится этот метод.

Ответы [ 2 ]

1 голос
/ 25 января 2010

Если вы используете TreeDropZone (вместо DropTarget), у вас будет больше специфичных для дерева опций и событий, таких как onNodeDrop. Обратите внимание, что существует множество способов сделать DnD с Ext JS.

0 голосов
/ 26 января 2010

Вот какое-то решение

MyTreePanel = Ext.extend(Ext.tree.TreePanel, {
  listeners: {
    nodedragover: function(e) {
      // remember node
      this.targetDropNode = e.target;
    }
  }

  initComponent: function() {
    // other initialization steps
    this.targetDropNode = false;
    var config = {
      // ...
      dropConfig: {
        ddGroup: 'mygroupdd',
        notifyDrop: function(ddSource, e, data) {
          // process here using treepanel.targetDropNode
        }
      }
      }
      // ...
    };
    // other initialization steps
  }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...