お世話になっております。ヨシダと申します。
hifive-uiのデータグリッドを利用させて頂いております。
データグリッドの検索時の動作についてご教示ください。
◆経緯
グリッドの表示を高速化するため、グリッド内の取得に時間のかかる項目については、
検索(GridController#search)と同時に別の非同期リクエストを行い、
そのリクエストが終わった段階でグリッドの表示内容を編集(DataSource#edit)し再描画しています。
最初のグリッドの検索では、後から非同期リクエストで取得する項目に"取得中..."と返しています。
グリッドのsearcherはAllFetchSearcherを用いています。
上記のような実装を行ったところ、画面起動時には重いリクエストの完了までに"取得中..."と出るのですが、
画面が起動してからグリッドを検索すると、"取得中..."と表示されませんでした。
暫く原因を調査してみて、以下の対応を考えております。
◆原因
グリッドの検索完了時は、編集された値を優先し表示する仕様のため。(検索結果を直接表示はしていない)
⇒グリッドは編集履歴(_editHistroy)を保持しており、履歴に基づいて検索完了時(正しくは再描画時)に各項目を編集後の状態にしている。
◆対応
検索結果を表示させるため、編集履歴をクリアする。
実装上は、グリッドの検索(GridController#search)前にロールバック(DataSource#rollback)で編集履歴をクリアする。
動作確認を行ったところ、意図通り"取得中..."と表示されるようになりました。
上記のような対応を考えておりますが、懸念などはありますでしょうか。
データグリッドの想定していない使い方になっていないかなどを気にしております。
◆環境情報
--------------------------------------------------------------------------------
【hifiveのバージョン】 1.20
【hifive-uiのバージョン】hifive-ui v20160513
【ブラウザおよびバージョン】 IE11
【動作OS】 Windows7 SP1
--------------------------------------------------------------------------------