jqGridの検索と検索演算子

jqGrid の検索機能では検索条件を $_GET パラメータとして渡されます。

検索パラメータは以下の3つです。

searchField: 検索フィールド
searchOper: 検索条件(演算子)
searchString: 検索する値

例えば searchField が “ID”、searchOper が “eq”、searchString が “100” ならば SQL 文に置き換えると ID = 100 という Where 句になります。

ということは、searchOper に入ってくる値にはどんなものがあるかを知っている必要があります。

そこで調べました。以下の簡単な jqGrid とナビゲーションバーに検索ボタンを表示させ、検索ボタンをクリックすると、デフォルトでは以下の検索ダイアログが表示されます。

jqgrid-search

どの演算子を表示させるかは、jqGrid の各カラムの定義で指定ができるのですが、今回は割愛し、各jqGrid の検索演算子とSQLの演算子の対比表にまとめました。

表示名 searchOperの値 SQL 演算子
次に等しい eq =
次に等くない ne <>
次より小さい lt <
次より等しいか小さい le <=
次より大きい gt >
次より等しいか大きい ge >=
次で始まる bw LIKE ‘%searchStr’
次で始まらない bn NOT LIKE ‘%searchStr’
次で終わる ew LIKE ‘searchStr%’
次で終わらない en NOT LIKE ‘searchStr%’
次を含む in LIKE ‘%searchStr%’
次を含まない ni NOT LIKE ‘%searchStr%’
次に含まれる cn LIKE ‘%searchStr%’
次に含まれない nc NOT LIKE ‘%searchStr%’
is null nu IS NULL
is not null nn IS NOT NULL

※ ‘searchStr’ は $_GET[‘searchString’] で渡される値です。
※ 「次に含まれる」、「次を含む」と「次に含まれない」、「次を含まない」は同じですね。
参考:http://stackoverflow.com/questions/9383267/what-is-the-usage-of-jqgrid-search-is-in-and-is-not-in

<table id="list"></table>
<div id="statusbar"></div>

<script type="text/javascript">
    $(document).ready(function () {
        $("#list").jqGrid({
            datatype: "json",
            url: "getdata.php",
            height: 250,
            width: 780,
            colModel: [
                { label: 'No', name: 'id', width: 75, key:true },
                { label: '日付', name: 'invdate', width: 90 },
                { label: 'クライアント', name: 'name', width: 100 },
                { label: '金額', name: 'amount', width: 80 },
                { label: '税', name: 'tax', width: 80 },
                { label: '合計', name: 'total', width: 80 },
                { label: '備考', name: 'note', width: 150 }
            ],
            viewrecords: true, // ページ、件数をツールバー上に表示
            pager: "#statusbar",
            caption: "jqGrid JSON 簡単サンプル"
        });

        // ナビゲーションの検索を有効にする
        jQuery("#list").jqGrid('navGrid','#statusbar',{del:false, add:false, edit:false, search:true});
    });
</script>

jqGrid を URL で指定したデータソースかデータを取得する方法では、データソース側では、これらの検索演算子に応じた検索結果を返さないとなりません。;-)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください