このトピックスは、1行目を列名として利用するにはで紹介するデータベース・テーブルとしての使い方を対象にしています。

絞り込みをするには

完全一致による絞り込み

mt:SheetAssetTableテンプレートタグにfilter_field属性とfilter_value属性を指定します。

正規表現による絞り込み

mt:SheetAssetTableテンプレートタグにfilter_field属性とfilter_regex属性を指定します。

複雑な絞り込み

mt:SheetAssetTableテンプレートタグにfilter_eval属性を指定します。

filter_eval属性にはPerlの式を記述できます。データベース・テーブルの各レコードが変数$_にハッシュリファレンスとして渡されます。

式がを返すレコードを絞り込みます。

条件に合致しないレコードの絞り込み

mt:SheetAssetTableテンプレートタグにfilter_invert属性を指定します。

絞り込みの例

<!-- 値による絞り込み -->
<mt:SheetAssetTable filter_field="prefecture" filter_value="東京都">
    <!-- prefecture列が"東京都"のレコードのみ表示 -->
</mt:SheetAssetTable>

<!-- 正規表現による絞り込み -->
<mt:SheetAssetTable filter_field="code" filter_regex="^ABC-">
    <!-- code列が"ABC-"で始まるレコードのみ表示 -->
    <!-- "ABC-111"は表示されますが、"111-ABC"は表示されません -->
</mt:SheetAssetTable>

<!-- 式による絞り込み -->
<mt:SheetAssetTable filter_eval="$_->{code} eq 'ABC-111' && $_->{sales} > 10">
    <!-- code列が"ABC-111"で、かつ sales列が10以上のレコードのみ表示 -->
</mt:SheetAssetTable>

<!-- 検索条件の反転 -->
<mt:SheetAssetTable filter_field="prefecture" filter_value="東京都" filter_invert="1">
    <!-- prefecture列が"東京都"ではないレコードのみ表示 -->
</mt:SheetAssetTable>

並べ替えをするには

指定した列の昇順による並べ替え

mt:SheetAssetTableテンプレートタグにsort_field属性として列名を指定します。

指定した列の降順による並べ替え

mt:SheetAssetTableテンプレートタグにsort_field属性として列名と、sort_order属性としてdescを指定します。

数値としてよる並べ替え

mt:SheetAssetTableテンプレートタグにsort_as属性としてnumberを指定すると、値を数値として比較します。

この指定を行わないと、例えば昇順において109よりも上位に並べ替えられます。

複雑な並べ替え

mt:SheetAssetTableテンプレートタグにsort_eval属性として式を指定します。

sort_eval属性にはPerlの式を記述できます。Perlのmap関数と同様に、変数$a$bにそれぞれハッシュリファレンスとしてレコードが渡されます。

詳しくは例を参考ください。

<!-- name列による昇順の並べ替え -->
<mt:SheetAssetTable sort_field="name">
    <!-- name列の昇順に並べ替えられます -->
</mt:SheetAssetTable>

<!-- number列による数値の降順の並べ替え -->
<mt:SheetAssetTable sort_field="number" sort_as="number" sort_order="desc">
    <!-- number列を数値として比較し、値の大きい順に並べ替えられます -->
</mt:SheetAssetTable>

<!-- 式による絞り込み -->
<mt:SheetAssetTable sort_eval="($b->{sales} <=> $a->{sales}) || ($a->{name} cmp $b->{name})">
    <!-- sales列の数値が大きい順、同じ値の場合はname列の昇順に並べ替えられます -->
</mt:SheetAssetTable>