ExtJS:TableLayoutを適用しているPanelでdoLayout()が利かない
またまた,はまりました。
やりたかったことはこういう事なんですが…
- TableLayoutを適用したExt.Panel(これを「パネルA」とする)を作成する。
- 作成したExt.Panel「パネルA」を先に表示する。
この段階で「パネルA」のrender(elmnt)メソッドが実行されます。 - 「パネルA」に新しいExt.Panelを10個追加する。
- 「パネルA」のdoLayout()メソッドを呼び出して,後から追加したPanelを表示する。
どうやっても後から追加したPanelが表示されません。
んで,必死で探し回って見つけたのがhttp://extjs.com/forum/showthread.php?t=36584の情報。
この情報によると,「今のところ,TableLayout.onLayout は一番最初に呼び出されたときに持っているアイテムしか render しないよん。その後でdoLayout()が呼ばれても,後から追加されてまだ render されていないアイテムには利かないよ〜ん。もしどうしてもdoLayout()を使いたければ,オーバーライドしてね〜」ということだそうです。
つまり次の方法でないとダメということですね。
- TableLayoutを適用したExt.Panel(これを「パネルA」とする)を作成する。
- 「パネルA」に新しいExt.Panelを10個追加する。
- 作成したExt.Panel「パネルA」のrenderメソッドを呼ぶ。
このあたりが改善される見込みはなさそうと取れる記述もあったりして,別のLayoutを使った方が良いみたい。
いや,最初から本家のフォーラムを見ればよかったんですが,やっぱり,ほら,英語じゃなくて日本語の情報がないかなと思うじゃないですか。そんなわけで日本語情報ばっかり探し回っていたんですが,これってFAQなのかしら……?
