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()を忘れないように注意。
コメント
コメントを投稿