дерево extjs 4 выбирает конкретный узел по его внутреннему идентификатору (не по индексу записи)

Я пытаюсь синхронизировать представление данных (окно проводника) с деревом (деревом каталогов). Когда я нажимаю на элемент в моем представлении данных, я бы хотел, чтобы в дереве был выбран тот же узел

Проблема в том, что использование tree.getSelectionModel().select(index) не позволяет мне выбрать узел по его внутреннему идентификатору (идентификатор, который я предоставил в своем хранилище дерева), а только по индексу записи... Поэтому я просто не могу синхронизировать оба представления.. , Было бы решение expandPath(), но мое хранилище деревьев питается реляционной базой данных (id, name, parent_id и т. д.), поэтому поиск полного пути является (или может быть) большой нагрузкой для сервера ( Я бы хотел избежать необходимости указывать какой-либо путь...).

По сути, я хотел бы иметь возможность сказать «расширить узел, в котором «id =» (или любой другой ключ/значение хранилища деревьев).

Является ли это возможным ? Есть ли обходной путь?

Спасибо, что читаете меня!


person lapos34    schedule 16.06.2011    source источник


Ответы (2)


Функция tree.getSelectionModel().select(record) может принимать экземпляр записи вместо индекса. Я бы сделал что-то вроде этого:

var record = tree.getRootNode().findChild('id_name','record_id',true);
tree.getSelectionModel().select(record);

для получения дополнительной информации о функции findChild ознакомьтесь с документацией NodeInterface здесь: http://docs.sencha.com/ext-js/4-0/#/api/Ext.data.NodeInterface-method-findChild

person FoxMulder900    schedule 18.07.2011

вы также можете использовать selecteditemtree.data.id для этого.

person Raza Ahmed    schedule 20.08.2013