2013-07-29 3 views
1

Прежде всего: Я использую ExtJS 4.2.1ExtJs 4 - Копирование записей из магазина в TreeStore (сетки TreeGrid)

у меня есть две сетки: первый один собирает записи из базы данных (страны) и вторая - деревенская (должна показать страны, и каждая страна должна расширить список городов).

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

я получаю запись из первой сетки с:

grid.getSelectionModel().getSelection() 

Но я не знаю, как копировать их на TreeGrid. Я пробовал использовать setRootNode, и я могу видеть записи о «сыром» свойстве корневого узла, но я не могу показать их в сетке.

Что мне не хватает?


Обновлено: Я удалось получить страны с:

var records = grid.getSelectionModel().getSelection(); 
treegrid.getStore().setRootNode({ root: true, expanded: true, children: records}) 

Теперь у меня возникли проблемы, чтобы загрузить подзаписи. В качестве теста я попытался использовать те же «записи страны», чтобы убедиться, что с моделью нет конфликтов. Это то, что я пробовал:

var records = grid.getSelectionModel().getSelection(); 
for (record in records){ 
    records[record].expanded = true; 
    records[record].children = records; 
} 
treegrid.getStore().setRootNode({ root: true, expanded: true, children: records}) 

Это должно показать список стран и при расширении одной из записей, он должен показать снова список, как дети выбранной записи. Это не работает :(

+0

Вы разрешили это? – Reimius

+0

Да, но решение получилось слишком тяжелым, поэтому я решил собрать все на бэкэнде и отправить все это обратно. – nahl

ответ

1

решаемые его. Я не понравилось решение так в конце концов, я построил все это на внутреннем интерфейсе, но он работал.

Использование вставки/AppendChild, как Reimius сказал не работает с мои записи не были узлами, поэтому мне пришлось перебирать массив страны и сделать каждую страну узлом с помощью createNode(). Для каждого созданного узла страны я зациклился на своих городах, создал узел для каждого из них, а затем использовал insertChild() ., чтобы связать его со страной

После того, как все было сделано, я использовал:

treegrid.getStore().setRootNode({ root: true, expanded: true, children: records}) 

С «записями», являющимися массивом этого чудовищного создания узлов.

+0

Хорошо, что вы нашли решение. – Reimius

+0

Я забыл опубликовать его здесь, потому что он был настолько раздражающим и неэффективным, что я не думал об этом как о «реальном» решении, но, возможно, он указывает кому-то в правильном направлении, чтобы создать что-то полезное. – nahl

Смежные вопросы