jqGridでは表のヘッダー部分に入力エリアを設けて絞り込みを行うことが簡単にできます。
プログラミングとしては作成したjqGridの表に「filterToolbar」メソッドでフィルターを追加するだけです。
jqGridの表でフィルタリング(絞り込み)を行う
jqGridでフィルターを追加するには表を作成後「filterToolbar」メソッドを呼び出します。
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/ui-lightness/jquery-ui.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/free-jqgrid@4.15.4/css/ui.jqgrid.min.css">
<script src="https://cdn.jsdelivr.net/npm/free-jqgrid@4.15.4/js/i18n/min/grid.gendere-de.js"></script>
<script src="https://cdn.jsdelivr.net/npm/free-jqgrid@4.15.4/js/jquery.jqgrid.min.js"></script>
<script>
$(function() {
//列の設定
var col_model= [
{ name:"no" , index:"no", width:70, align:"right" },
{ name:"name", index:"name", width:100, align:"left" },
{ name:"age", index:"age", width:100, align:"right" },
{ name:"gender", index:"gender", width:100, align:"left" },
{ name:"feature", index:"feature", width:200, align:"left" }
];
//列の表示名
var header_name = ["No.","名前","年齢","性別","特徴"];
//表示するデータ
var datas = [
{ "no":1, name:"Aさん", age:20, gender:"男性", feature:"仮名ではない" },
{ "no":2, name:"Bさん", age:25, gender:"女性", feature:"ばあさんではない" },
{ "no":3, name:"Cさん", age:30, gender:"男性", feature:"特になし" },
{ "no":4, name:"Dさん", age:35, gender:"男性", feature:"デェーさんではない" },
{ "no":5, name:"Eさん", age:45, gender:"女性", feature:"胃酸ではない" },
{ "no":6, name:"Fさん", age:50, gender:"女性", feature:"特になし" },
{ "no":7, name:"Gさん", age:55, gender:"男性", feature:"じいさんではない" },
{ "no":8, name:"Hさん", age:60, gender:"女性", feature:"エロいわけではない" },
{ "no":9, name:"Iさん", age:65, gender:"女性", feature:"愛燦燦とー" },
{ "no":10, name:"Jさん", age:70, gender:"男性", feature:"川平慈英とは関係ない" },
{ "no":11, name:"Kさん", age:75, gender:"男性", feature:"計算ではない" },
{ "no":12, name:"Lさん", age:80, gender:"男性", feature:"特になし" }
];
//テーブルの作成
$( "#sample1" ).jqGrid({
data:datas //表示したいデータ
,datatype : "local" //データの種別(local,json,xml)
,caption : "表のタイトル" //表のキャプション
,colNames : header_name //列の表示名
,colModel : col_model //列ごとの設定
,rowNum : 5 //1ページに表示する行数
,rowList : [1, 5, 10, datas.length] //変更可能な1ページ当たりの行数
,height : $( window ).height() * 0.4 //高さ(px指定)
,width : $( window ).width() * 0.6 //幅(px指定)
,pager : 'pager1' //footerのページャー要素のid
,shrinkToFit : true //画面サイズに依存せず固定の大きさを表示する設定
,viewrecords: true //footerの右下に表示する。
});
$( "#sample1" ).filterToolbar({
defaultSearch : "eq" //一致条件を入れる。
//選択肢['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc']
});
});
</script>
</head>
<body>
<table id="sample1"></table>
<div id="pager1"></div>
</body>
</html>
実際にフィルターを作成しているのは
$( "#sample1" ).filterToolbar({
defaultSearch : "eq" //一致条件を入れる。
//選択肢['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc']
});
の部分ですね。
一致条件は
| 選択肢 | 説明 | 該当するSQL演算子 |
|---|---|---|
| eq | 次に等しい | = |
| ne | 次に等くない | <> |
| lt | 次より小さい | < |
| le | 次より等しいか小さい | <= |
| gt | 次より大きい | > |
| ge | 次より等しいか大きい | >= |
| bw | 次で始まる | LIKE ‘文字列%’ |
| bn | 次で始まらない | NOT LIKE ‘文字列%’ |
| ew | 次で終わる | LIKE ‘%文字列’ |
| en | 次で終わらない | NOT LIKE ‘%文字列’ |
| in | 次を含む | LIKE ‘%文字列%’ |
| ni | 次を含まない | NOT LIKE ‘%文字列%’ |
になります。
まとめ
jqGridでフィルターを実装することは非常に簡単であり、便利なのでぜひ使えるようになりましょう。
以上、jqGridの表でフィルタリング(絞り込み)を行うでした。
