flex3 届いた

flex3 が届きました。せっかくなので、ちょっと前に作りかけたアプリの続きを作り始めました(といっても面倒なのでお試し版をそのまま使っていたりする)。

比較的順調に進んだのですが、DataGrid にデータを追加するところでつまづきました。

DataGrid は、単に表示するだけであれば XML などのデータを dataProvider として指定してやればいいだけですが、表示されているデータに新たに追加したり削除したり、といった作業が発生する場合は collection というものにデータをいったん入れて、その collection を DataGrid の dataProvider として指定する、というのが一般的なようです。

で、まずこの "collection" とはなんぞや?というところで理解に時間がかかりました。参考書に使っている『Adobe Flex2 プロフェッショナルガイド』*1には collection の説明ないし。

眠くなりそうなマニュアル(でも IBM などのと比べると雲泥の差。マニュアルにしては分かりやすいと思う)を読みながら分かったのは、配列などのデータを操作するためのオブジェクトだ、ということでした。どうも「コレクション」という名前に引きずられて迷っていた感があります。handler とかだとすんなり分かったような気もする。

次いで、元データには XML を使っていたので、XMLListCollection を使ったのですが、DataGrid にデータを追加するときに

xc.addItem({"skill_title":"", "skill_pt":""});

とかやって、怒られていました。えっと、サンプルコードの collection の addItem の使い方のサンプルにこんな風に JSON を使って書いてあったので……。

かな〜り考えて、はたと気づいたのは、「XMLListCollection なんだから xml 形式で追加データ書かないといかんじゃん」ということでした(サンプルコードは ArrayCollection の場合だった)。

*1:誤植多し。昔の TRPG 並に。特に図はまるで信用なりません