FlexigridでAjaxを使う
最終更新日時:2010-09-27 00:00:00
Flexigrid
Flexigrid
概要
Flexigrid で Ajax を使うことにより、ページ単位での表示、ソート、検索等のさらに複雑で便利な機能に対応することが可能です。
使用方法
JavaScript 側では設定項目が増えるだけで、基本的には使用方法は変わりません。
その代わりに、Ajaxで呼び出されるプログラム側でデータを出力する部分を実装する必要があります。
なお、それぞれの機能の実装方法は、それぞれの項目を参照してください。
Flexigrid:ページ表示
JavaScript側
Flexigrid の設定項目中で、url に Ajax で取得する URL を、dataType でその取得するデータの型を指定します。
データ型は xml と json が指定可能です。
Flexigrid の設定項目中で、colModel で列について、以下のように設定を行うことが出来ます。
| 項目 | 概要 |
|---|---|
| display | 列の表示名 |
| name | 列の名称 |
| width | 幅 |
| sortable | 列でのソートを有効にするかいなか |
| align | 配置位置 |
| hide | 非表示にするかいなか |
なお、テーブルの要素の実体は Ajax で取得しますので空でOKです。
<table id="wiki_list"></table>
<script type="text/javascript">
<!--
$(document).ready(function()
{
$('#wiki_list').flexigrid(
{
...
url: '/test/ajax.cgi',
dataType: 'json',
colModel : [ {display: 'ID', name: 'id', width: 40, sortable : true, align: 'right' },
{display: 'タイトル', name: 'title', width: 300, sortable : true, align: 'left' },
{display: 'カテゴリ', name: 'category', width: 200, align: 'left' },
],
...
}
);
}
);
-->
</script>
Ajaxで呼び出されるプログラム側
dataType で指定された形式で、表示するテーブルデータを出力します。
以下、Perl プログラムの例です。
use Encode;
use JSON;
...
my @rows = ();
for my $w (@data) {
push @rows, { id => $w->id,
cell => [ $w->id,
Encode::decode_utf8($w->title),
Encode::decode_utf8($w->category),
],
};
}
my $result = { page => $self->param('page'),
total => $total,
rows => [ @rows ],
};
print $self->header(-type => 'text/x-json', -charset => 'utf-8'),
to_json($result, { utf8 => 1 });
Perl で JSON 形式で出力することについては、JSON.pmを参照。