ユーザービリティとパフォーマンスの観点から、固定サイズのグリッドにグリッドの結果を表示し、ページをブラウズするためのボタンを配置すると便利です。
つまり、グリッドのページングです。ページングは標準グリッドとフリー スタイル グリッド、そしてネストされたグリッドにも適用されます。
グリッドの [ Rows ] プロパティの値がゼロ以外の場合、ページングは自動で行うことも、手動で行うこともできます。
手動ページング用に、Grid コントロールに関連付けられたメソッドがあります。
手動ページングの処理に使用可能なメソッドを次に示します。
FirstPage メソッドは、返されたレコードの最初のセットにユーザーを移動します。たとえば、次のコードでは、ユーザーが Enter イベントと関連付けられたボタンをクリックすると、グリッドに最初のレコードセットが表示されます。
Event Enter
MyGrid.FirstPage()
Endevent
NextPage は、後続のレコードセットを表示します。
Event 'NextList'
&err = MyGrid.NextPage()
if &err = 2
Message.Caption = 'これが最後のページです'
endif
Endevent
この例では、ユーザーが NextList ボタンをクリックすると、グリッドにその次のレコードセットが表示されます。既に最後のページが読み込まれていた場合は、 [ Message ] テキストブロックに「これが最後のページです」というメッセージが表示されます。
PreviousPage メソッドを使用すると、1 つ前のレコードセットが表示されます。
Event 'BackList'
&err = MyGrid.PreviousPage()
if &err = 2
Message.Caption = ‘これが先頭のページです’
endif
Endevent
この例では、ユーザーが BackList ボタンをクリックすると、グリッドに 1 つ前のレコードセットが表示されます。既に最初のページが読み込まれていた場合は、 [ Message ] テキストブロックに「これが先頭のページです」というメッセージが表示されます。
LastPage メソッドは、レコードの最後のセットにユーザーを移動します。グリッドにベーステーブルがある場合にのみ使用可能です。
Event 'Last'
MyGrid.LastPage()
Endevent
この例では、ユーザーが [ 最後へ ] ボタンをクリックすると、グリッドに最後のレコードセットが表示されます。
GotoPage(ページ番号) メソッドは、特定のレコードセットに直接アクセスできるようにします。グリッドにベーステーブルがある場合にのみ使用可能です。次に、データのセットに対応するページを呼び出す例を示します。
Event 'GoTo'
MyGrid.GoToPage(&PageNbr)
EndEvent
メソッドは、実行後に値を返します。
- 0: 操作が正常に終了した場合
- 1: グリッドのページングが無効になっている場合
- 2: 最終ページまたは最初のページが既に表示されている場合 (それぞれ NextPage と PreviousPage メソッドに対応)
- 3: グリッドにベーステーブルがない場合
- フィルタのある Web パネルにページングを適用する場合、前のページに対応する結果が表示されないように、フィルタを適用するイベントに FirstPage メソッドを使用する必要があります。
- FirstPage、NextPage、PreviousPage、GotoPage(N) の効率性は、対応するグリッドに対して定義されたナビゲーションの効率性に関連します。言い換えると、ページングがない場合のグリッドの応答時間が良好な場合、ページングを使用した場合の応答時間も同様になります。
可能な場合はサーバーページングの使用も考慮してください。グリッドをナビゲートするための条件 (Where 条件) のいずれかがクライアントで評価される場合、サーバーページングは最適化されません。
- ベーステーブルがないグリッドの場合、またはベーステーブルがあるグリッドで条件のいずれかがクライアント側で評価される (DBMS で評価できない) 場合、RecordCount、LastPage、および GotPage の各メソッドは実装されません。
サーバーページングを使用できない場合は、ページングが "レコード番号" 単位で行われます。レコードの N ページ目を表示するには、その前にある (N-1) ページまでのレコードは表示されずに読み込まれます。
- ページが多くなりすぎないよう、データを適切にフィルタする。
- コストが高い場合には、GotoPage(N) の N に大きな値を使用しない。また、LastPage の使用も避ける。
- プロパティを呼び出すたびにデータベースに対し COUNT が発生するため、 [ RecordCount ] プロパティの値を変数に保存する。
FirstPage メソッド
NextPage メソッド
PreviousPage メソッド
LastPage メソッド
GotoPage メソッド
[ CurrentPage ] プロパティ
|