DataGrid+ArrayCollectionでリスト要素のBindableプロパティーを変更するとエラーになる場合の対処方法

ArrayCollectionをDataGridでリスト表示していた。

そしてリスト要素オジェクトで内のBindableプロパティーを変更しようとしたら,このようなエラーになった。

Error: 検索条件には、最低 1 つのソートフィールド値が含まれている必要があります
at mx.collections::Sort/findItem()[E:\dev\gumbo_beta2\frameworks\projects\framework\src\mx\collections\Sort.as:541]

エラーの意味はよくわからんが,なんだかソートが関係しているようだ。確かにArrayCollectionにはソートを設定していた。

そこで,要素のプロパティーを変更する時だけ一時的にソートを無効にして再設定するという方法を試したらうまくいった。

//一度ソートを無効にしてからリストの要素を変更しないとなぜかエラーになるので
//設定されているソートを退避させる
var sort:Sort = list.sort;
list.sort = null;

//リストの要素を変更
var item:Object = list.getItemAt(0);
item.index++;

//ソートを再設定してリフレッシュ
list.sort = sort;
list.refresh();

なお,変更したい要素のプロパティーがBindableでない場合はエラーは起こらないようなので,Bindable設定と何か関係があるのかもしれない。

コメント

このブログの人気の投稿

レオナルド・ダ・ビンチはなぜノートを「鏡文字」で書いたのか?

macでsmb(samba)共有サーバーに別名で接続(別アカウント名で接続)する方法

Google DriveにCURLでアップロードするには?