2011-01-20 14 views
9

CellTableを使用して編集可能なグリッドを作成しようとしています。 ケースは、 スプレッドシートへの10キー入力に使用されている会計士にとっては、かなり大量のデータ入力です。私たちはスプレッドシート-スタイルのキーボードナビゲーションを可能な限り再現しようとしています。GWT CellTableのキーボードナビゲーション

  1. TextInputCellの編集モード に入るためにEnterキーを押ししなくても済むようにする方法はありますか?私は TextInputCell.onBrowserEvent()を打ち返して、フォーカス イベントが受信されたときにonEnterKeyDown()にコールしようとしましたが、動作しませんでした。代わりに、左矢印と右矢印の 列の間を移動するにはタブ -

  2. タブシフトにを使用する方法はありますか? CellTableは左矢印と右矢印を使用して拡張するのが難しく ハードコードされているようです。

答えて

6

かなりの努力を払って、私たちはCellTableが私たちが必要とするものを実行するのに十分な拡張性がないと判断しました。私たちはGWTのGridクラスを拡張し、CellTableからの設計手がかりを必要に応じて十分に実行できるようにしました。

ページビューの80%は10行未満を表示し、600行×10列を超えることはありません(<は500%を超える場合があります)。本格的なフライウェイトパターンの代わりに、レイジーローディングパターンを使用しました。グリッドの初期設定時には、表示専用のウィジェットを使用して、基礎となる値オブジェクトからのデータを表示します。各表示専用ウィジェットには、FocusHandlerが添付されています。ユーザーが表示ウィジェットをクリックまたはタブすると、FocusHanderはその行の表示専用ウィジェットを編集可能なウィジェットで置き換えます。

表示専用ウィジェットは、TextBoxやCheckBoxなどの軽量ウィジェットに制限されているため、レンダリング時間は問題ありません。 100行×5列が2秒未満でレンダリングされます。 SuggestBoxes、DateBoxes、およびその他のコンポジットは、編集可能なウィジェットとしてのみ使用できます。

利点

  1. 柔軟性 標準のウィジェット
  2. 拡張のいずれかを使用する - レスでプロトタイプ - 我々は、開発の CellTable
  3. 使いやすさに作られた 実装の選択によって制限されていません開発の3日以上
  4. のニーズに合わせて十分に実行します
  5. あなたは

デメリット

  • ないCellTableのように拡張性を期待するようの
  • タブは、箱から出して動作します。
  • 我々はそれを自分自身 Class Model
+1

実装オープンソースであるを維持する必要がこれ 実装では、行の 何千人をレンダリングするつもりはありません。私は同じ問題を抱えています。私はそれを試すことができれば私は素晴らしいだろう! ありがとう! – Jacob

+0

申し訳ありませんが、これはクライアントのプロジェクト用に構築されたものです。彼らはすべてのコードを所有しています。 – piehole

+0

他の人のための回避策への良い抽象的なレベルの概要、答えのおかげで – Forhad

関連する問題