



ページ分割されたHTMLページを生成する
use HTML::pager;
パッケージをロードする。
用意するテンプレート:
<html>
:
<body>
<TMPL_VAR NAME="PAGER_JAVASCRIPT">
<form>
<table>
<TMPL_LOOP NAME="PAGER_DATA_LIST">
<tr>
<td><TMPL_VAR NAME="COL0"></td>
<td><TMPL_VAR NAME="COL1"></td>
<td><TMPL_VAR NAME="COL2"></td>
</tr>
</TMPL_LOOP>
</table><br>
<table><tr>
<td width="33%"><TMPL_VAR NAME="PAGER_PREV"></td>
<td width="33%"><TMPL_VAR NAME="PAGER_JUMP"></td>
<td width="33%"><TMPL_VAR NAME="PAGER_NEXT"></td>
</tr> </table>
<TMPL_VAR NAME="PAGER_HIDDEN">
</form>
</body>
</html>
使い方:
my $cgi = new CGI;
# 実用的には、$offsetと$rowからデータベースを読む my $get_data_sub = sub { my ($offset, $rows) = @_; my @return_array; for (my $x = 0; $x < $rows; $x++) { my $key = $offset + $x; my %out; #データは、テンプレート中の<TMPL LOOP>ブロック内の<TMPL VAR>に出力する $out{'COL0'} = ''} = '###'; push(@return_array,\%out); } return \@return_array; }; my $tpl = new HTML::Template(filename => './test.tpl'); my $pager = new HTML::Pager(query => $cgi , template => $tpl, get_data_callback => $get_data_sub, rows => 100, page_size => 10); print $cgi->header(-type => 'text/html',-charset => 'Shift-JIS'); print $pager->output;
newメソッドのパラメタ:
query:ブラウザとインタフェースするCGIオブジェクト
template:表示ページのテンプレートを保持するHTML::Templateオブジェクト
get_data_callback:行データを取得するサブルーチン
rows:トータル行
page_size:1ページあたりの行数
以下のパラメタはオプション---
javascript_presubmit:ページ変更をsubmitする前に呼び出すjava scriptを設定
debug:デバッグ情報を表示するとき1に設定