ページ送り
サーバが一ページ分のデータと総件数を返す場合の一覧画面です。全データがブラウザにある場合は一万行の一覧を参照してください。
Pager total: Store total perPage: Screen size page: page send: #goPage:部品はデータを持たない
部品に渡すのは、総件数と現在のページ番号です。ボタンが押されると、部品は画面にページ番号を送ります。データの取得は画面が行います。
Screen >> goPage: n = self with: { page: n. rows: Store page: n size: Screen size }.
この例では、サーバの代わりに 143 件を持つクラスから読んでいます。実際のシステムでは Http get: になります。画面の書き方はどちらでも同じです。
#goPage: は画面のハンドラで、コンパイル時に検査されます。どのページ番号を送るかは部品が決め、ボタンごとに違う値が付きます。
表示
最初のページ、最後のページ、現在のページの前後二つを表示し、飛んだ部分には … を一つ入れます。ページ数に関わらず幅が変わらないので、ページを送ってもボタンの位置が動きません。
1 ページ目では「前へ」が、最後のページでは「次へ」が無効になります。disabled 属性は必要なときだけ付けます。
0 件でも 1 ページとして扱い、「0 件」と表示します。
状態
部品はアクタではなく、状態を持ちません。現在のページ番号と総件数は画面が持ち、描画のたびに部品へ渡します。画面はデータ取得のためにこの二つを持っているので、部品にも持たせると値が二重になります。