ActionScript3(Flex)でArrayCollectionのソート状態をソートなし状態にしてもソートを維持するには?
これはなかなか説明するのがムズカシイ。
ArrayCollectionはソートが可能だけど、ソートしたとしてもそれはあくまで見かけ(view)上の話で、ソースとなる配列が並びかえられたわけではない。だからソートを無効にすると、ソースとなる配列の並びのままが再現される。
では、ソートを無効しても現在のソート状態を維持するにはどうしたらよいか?
例えばこんな感じ。
ポイントはac.toArray()を使ってソート状態の配列を取得してac.sourceにセットするところ。
refresh()を忘れないように注意。
ArrayCollectionはソートが可能だけど、ソートしたとしてもそれはあくまで見かけ(view)上の話で、ソースとなる配列が並びかえられたわけではない。だからソートを無効にすると、ソースとなる配列の並びのままが再現される。
では、ソートを無効しても現在のソート状態を維持するにはどうしたらよいか?
例えばこんな感じ。
var ac:ArrayCollection = new ArrayCollection(); ac.addItem("2"); ac.addItem("4"); ac.addItem("3"); ac.addItem("1"); trace("初期状態 ac=" + ac + " ac.sorce=" + ac.source); ac.sort = new Sort(); ac.refresh(); trace("ソート有効 ac=" + ac + " ac.sorce=" + ac.source); ac.source = ac.toArray(); //ソート状態の配列を取得してsourceとする ac.sort = null; ac.refresh(); trace("ソート無効 ac=" + ac + " ac.sorce=" + ac.source);
ポイントはac.toArray()を使ってソート状態の配列を取得してac.sourceにセットするところ。
refresh()を忘れないように注意。
コメント
コメントを投稿