flexのDataGridを使ってデータ一覧を表示したが、なぜか、マウスのカーソル通り、背景が反転しない。
もしや、DataProviderを自作しているためか?
でも、同じオブジェクトを使いまわしているところはないし・・・
ん・・・
何かデータにゴミがあるとおかしくなるのか?
と、データのプロパティを1つ1つ調べていくと、
uid
というフィールドがおかしいというところまでは力技で突き止めた。
んー、このフィールド名ではなく、別のフィールド名(messageId)という名前に変更したところ、
きちんと動くようになった・・・・
ちなみに、ほかでも同じような状況になったことがあるのだが、uidをダブらないようにしたらこの状況は起きていないので、
明らかに、このフィールドが作用している・・・
もしや、これは使えないフィールドというものが存在するかも。。。。。
私の場合、SQLiteを使ってデータを保存して、このフィールド名にuidというものを使ってしまった。
このように、DBという制約に頭がいってしまい、
uidというフィールドがFlexのframeworkレベルまで影響を及ぼすということを認識していなかった。
多少調べてみたら、
http://livedocs.adobe.com/flex/3_jp/langref/mx/controls/listClasses/BaseListData.html
というところが関係しそうな気がする。
さらに調べてみると、そのuidは、
http://livedocs.adobe.com/flex/3_jp/langref/mx/utils/UIDUtil.html#getUID()
で、itemのuidフィールドを見てそこからuidを取得しているから
uidというフィールドに一意にならないデータとして使ってはならないということだ。
私の場合、メールのmessage-idをuidとして保存していたのだが、意味としては重複してはならないが、
データとして結果として重複する場合があるので、まあ、それはそれでいいかとしていたが、
やはり、名前を変えることにした。
通常、uidというフィールドにユニークでない値をつかうということは少ないと思うが、
レアなケースだけにすぐに原因も見つけられなかった。
まあ、これでもう少し、
DataGridの中身が理解できたので、それはそれでいい経験ということで納得しよう。


