Structures_DataGrid_Renderer_HTMLTable

Structures_DataGrid_Renderer_HTMLTable -- HTML テーブル レンダリングドライバ

説明

DataGrid を HTML Table としてレンダリングするドライバです。

サポートする操作モード

このドライバは次の操作モードをサポートしています。

表 62-1このドライバがサポートする操作モード

モードサポートしている?
コンテナのサポートyes
出力バッファリングyes
ダイレクトレンダリングno
ストリーミングno
オブジェクトの永続化no

オプション

このドライバは、以下のオプションを受け付けます。

表 62-2このドライバのオプション

オプション説明デフォルト値
buildFooterboolフッタを作成するかどうか。true
buildHeaderboolヘッダを作成するかどうか。true
classASCstring TH 要素の CSS クラス名で、現在の並び順が昇順であることを表すもの。 ''
classDESCstring TH 要素の CSS クラス名で、現在の並び順が降順であることを表すもの。 ''
columnAttributesarray カラムのセルの属性。 array(fieldName => array(attribute => value, ...) ...) 形式の配列となります。 このオプションは、XML/HTML ベースのドライバでのみ使用します。 array()
convertEntitiesbool html エンティティを変換するかどうか。 htmlspecialchars() をコールします。 true
defaultCellValuestring空のセルに表示するデフォルトの値。null
defaultColumnValuesarray カラムごとに指定するセルのデフォルト値。 array(fieldName => value, ...) 形式の配列となります。 array()
emptyRowAttributesarray空の行についての属性を含む連想配列。array()
encodingstring 内容のエンコーディング。mbstring 拡張モジュールが使用可能な場合、 デフォルト値は mb_internal_encoding() から取得します。 それ以外の場合のデフォルト値は ISO-8859-1 となります。 'ISO-8859-1'
evenRowAttributesarray偶数行の属性を含む連想配列。array()
excludeVarsarray作成される HTTP クエリから取り除く変数。array()
extraVarsarray作成される HTTP クエリに追加される変数。array()
fillWithEmptyRowsboolすべてのページで行数が同じになるようにするかどうか。false
headerAttributesarray 見出し行の属性。array(attribute => value, ...) 形式の配列となります。 array()
hideColumnLinksarray デフォルトでは、すべてのカラムで並べ替えリンクが有効になります。 このオプションを使用すると、指定したカラムの並べ替えリンクを無効にできます。 array(fieldName, ...) 形式の配列で指定します。 このオプションは、並べ替えをサポートしているドライバでのみ有効です。 array()
numberAlignbool数値を右詰めにするかどうか。true
oddRowAttributesarray奇数行の属性を含む連想配列。array()
onMovestring ユーザがページを移動したりデータをソートしたりしたときの onclick/onsubmit イベント発生時にコールする Javascript 関数の名前。 この関数は、オブジェクトを引数として受け取ります。 このオブジェクトの形式は { page: <page>, sort: [{field: <field>, direction: <direction>}, ...], data: <user_data> } のようになります。このオプションを指定しても、 href 属性は削除されないことに注意しましょう。 href を無効にしたい場合 (AJAX など……) は、ハンドラ関数内で false を返すようにしなければなりません。 null
onMoveDatastring onMove に渡す引数のオブジェクトの、"data" に渡すデータ。JSON 形式のシリアル化は行わず、 そのままの形で "data" 属性に渡されます。 クォートやスラッシュなどを追加する処理は、自分で行ってください。 ''
selfPathstring並べ替えおよびページ処理に使用するパス。$_SERVER['PHP_SELF']
sortIconASCstring 現在の並び順が昇順であることを示すアイコン。テキストか、 あるいは画像を表す HTML となります。 ''
sortIconDESCstring 現在の並び順が降順であることを示すアイコン。テキストか、 あるいは画像を表す HTML となります。 ''
sortingResetsPagingbool並べ替えの HTTP クエリで、ページをリセットするかどうか。true

例 62-1Prototype フレームワークを使用した、シンプルな AJAX サポート

<?php
require_once 'PEAR.php';
require_once 'Structures/DataGrid.php';    

$datagrid =& new Structures_DataGrid(10);

$options['dsn'] = 'mysql://username@localhost/mydatabase';
$datagrid->bind("SELECT * FROM mytable", $options);

// onclick イベント発生時の Javascript ハンドラ関数を設定します
$datagrid->setRendererOption('onMove', 'updateGrid', true);

if (isset($_GET['ajax'])) {
    // AJAX リクエスト 'table' を処理します
    if ($_GET['ajax'] == 'table') {
        $datagrid->render();
    }
    // AJAX リクエスト 'pager' を処理します
    if ($_GET['ajax'] == 'pager') {
        $datagrid->render('Pager');
    }
    exit();
}

// AJAX リクエスト以外なら、普通の内容をレンダリングします……
?>
<html>

<head>
<!-- http://www.prototypejs.org にある Prototype JS フレームワークが必要です  -->
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">
function updateGrid(info) 
{
    var url = '<?php echo $_SERVER['PHP_SELF']; ?>';
    var pars = 'page=' + info.page;
    if (info.sort.length > 0) {
        pars += '&orderBy=' + info.sort[0].field + '&direction=' + info.sort[0].direction;
    }
        
    new Ajax.Updater( 'grid', url, { method: 'get', parameters: pars + '&ajax=table' });
    new Ajax.Updater( 'pager', url, { method: 'get', parameters: pars + '&ajax=pager' });

    // 重要: href によるリンクを無効にするために false を返します
    return false;
}
</script>
</head>

<body>
ページ: <span id="pager"><?php $datagrid->render('Pager'); ?></span>
<div id="grid"><?php $datagrid->render(); ?></div>
</body>

</html>