データグリッドの検索時の動作について

51 views
Skip to first unread message

yoshida.t...@gmail.com

unread,
Nov 21, 2016, 7:57:22 PM11/21/16
to hifive User Group
お世話になっております。ヨシダと申します。
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
--------------------------------------------------------------------------------

Takuya Kashimura

unread,
Nov 23, 2016, 10:09:50 PM11/23/16
to hifive User Group
ヨシダさん

ご質問ありがとうございました。

前提の確認なのですが、
> 非同期リクエストで取得する項目に"取得中..."と返しています。
はセルの中に、"取得中..."と表示しているという意味でしょうか。

上記前提で回答いたします。


原因を調査して頂いた通り、
editを使って編集履歴がある場合、グリッドには取得したデータではなく、編集中のデータが表示されます。

そのため、
> グリッドの検索(GridController#search)前にロールバック(DataSource#rollback)で編集履歴をクリアする。
の対応をして頂ければ問題ありません。

ただし、グリッド内でユーザの編集がある場合、その編集履歴も消えてしまうため、
ユーザによる「戻る」の操作はできなくなりますので、ご注意ください。

よろしくお願いいたします。

yoshida.t...@gmail.com

unread,
Nov 24, 2016, 1:18:30 AM11/24/16
to hifive User Group
カシムラさん

ご回答ありがとうございます。
前提に認識齟齬ございません。

> ただし、グリッド内でユーザの編集がある場合、その編集履歴も消えてしまうため、
> ユーザによる「戻る」の操作はできなくなりますので、ご注意ください。
→承知しました。ユーザによる「戻る」の操作は出来ないように別途修正しているので、
 問題にはならないと思います。

本件クローズさせて頂きます。


2016年11月24日木曜日 12時09分50秒 UTC+9 Takuya Kashimura:
Reply all
Reply to author
Forward
0 new messages