2

まず第一に、私はExtJs 4.2.1を使用しています

2 つのグリッドがあります。1 つ目はデータベース (国) からレコードを収集し、2 つ目はツリーグリッド (国を表示し、国ごとに都市のリストを展開する必要があります) です。

私が達成しようとしている動作は、最初のグリッドでレコード (または複数のレコード) を選択すると、それらのレコードがツリーグリッドにリーフとしてコピーされるため、それらのリーフをより多くのレコード (都市) で埋めることができます。

最初のグリッドから次のレコードを取得します。

grid.getSelectionModel().getSelection()

しかし、それらをツリーグリッドにコピーする方法がわかりません。setRootNode を使用してみましたが、ルート ノードの「raw」プロパティにレコードが表示されますが、グリッドに表示できません。

私は何が欠けていますか?


更新:私は国を取得することができました:

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})

これにより国のリストが表示され、レコードの 1 つを展開すると、選択したレコードの子としてリストが再び表示されます。動いていない :(

4

1 に答える 1

1

解決しました。私はソリューションが気に入らなかったので、最終的にバックエンドですべてを構築しましたが、機能していました。

Reimius が言ったように、insert/appendChild を使用すると、私のレコードはノードではなかったため機能しませんでした。そのため、country 配列をループして、createNode() で各国をノードにする必要がありました。作成した国ノードごとに、その都市をループし、それぞれのノードを作成してから、insertChild() を使用して国に関連付けました。

すべてが完了したら、次を使用しました:

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

「レコード」は、この巨大なノードの作成の配列です。

于 2013-08-30T19:38:19.863 に答える