Событие проверки обмена на узле дерева с использованием его идентификатора в ExtJs 4.1

У меня есть TreePanel. Каждому узлу в дереве присвоен идентификатор. При нажатии кнопки я хочу запустить событие checkchange для узла 2.1 (как показано в дереве ниже). Как я могу запустить событие checkchange для узла, используя его идентификатор по нажатию кнопки.

  1 
      1.2
      1.3
      1.4
  2
       2.1
       2.2
  3

Спасибо

1 ответ

Решение

Чтобы запустить обмен чеками, вам нужен узел и, если он проверен.

TreePanel использует Ext.data.TreeStore хранить информацию об узлах (она находится в store имущество).

Этот TreeStore имеет getNodeById( id ) метод, который возвращает узел записи по id.

Если вы хотите получить узел из другого свойства, то вам нужно использовать tree (Ext.data.Tree) собственность от store, который похож на менеджер узлов. Это имеет массив записей узла в nodeHash имущество. Вам нужно перебрать этот массив и сравнить данное свойство вручную.

Полный код:

buttonClick: function(button, e, eOpts) {
        var treepanel = button.up(...).down('treepanel');
        var node = treepanel.getStore().getNodeById(yourIDHere);
        // for custom property use this:
        /*var nodeHash = treepanel.getStore().tree.nodeHash;
        var node;
        for (var x in nodeHash) {
            if (nodeHash[x].get('customProperty') == customValue) {
                node = nodeHash[x];
                break;
            }
        } */
        treepanel.fireEvent('checkchange', node, node.get('checked'));
}
Другие вопросы по тегам