スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Flex/AIR] DataGrid のスクロールバーの上下ボタンを押し続けていると、 verticalScrollPosition の指定が効かないでござる

[前提]
・Flex / AIR(2.0) で、DataGrid を使用しています。
・DataGrid はタイマーで1秒ごとに内容が更新されます。
・タイマーでの処理前後に、verticalScrollPosition の取得/設定処理を挟み込み、
 内容が更新された後もスクロールバーの位置を変えないようにしています。

[事象]
・普通にスクロールバーをドラッグしたりしてるぶんには別に問題ない動作
・スクロールバーの下端の「↓」ボタンを連続押下(クリックしっぱなし)するなど、
 連続してスクロールが発生すると、表示が頭に戻ってしまう
 (DataGrid の更新が行われてすぐの状態)


verticalScrollPosition のタイミングが悪いのか、DataGrid の selected をいったん
false にしてみるとかいろいろしてみた結果、下記で改善しました。

1) verticalScrollPosition を変数に保存
2) DataGridの内容更新処理
3) DataGrid のメソッド validateNow() を実行
4) verticalScrollPosition に変数で保存していた内容をセット

ヒントとなったのは下記。

DataGrid、AdvancedDataGridに、任意の行を選択、スクロールさせる
http://d.hatena.ne.jp/yms505/20080905/1220573727

validateNow() をしないと、scrollToIndex() が効かないという話。

おそらくは、内容を更新したとはいえ、それはまだ描画が完了していないので、
その時点でスクロール位置とかを取得/設定する処理をしても、内容が更新された結果とは
結びつかないということなんでしょうね。
関連記事
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

comment

管理者にだけメッセージを送る

検索フォーム
リンク
最新記事
最新コメント
カテゴリ
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。