LoginSignup
9
8

More than 5 years have passed since last update.

jqGrid 検索・フィルタ・チェックボックス・ラジオボタン付きテーブルの作り方

Posted at

リッチなテーブルを簡単に作成することができるライブラリ「jqGrid」を使った
・検索
・フィルタ
・チェックボックス
・ラジオボタン
付きのテーブルの作り方。備忘録。

準備編などは以下を参照。
http://qiita.com/k499778/items/65db2380d989b1d70985
http://qiita.com/k499778/items/ad5aec2714d7c119996f


1.コーディング

jqGrid.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link type="text/css" media="screen" href="jqGrid/jquery-ui.min.css" rel="stylesheet" />
<link type="text/css" media="screen" href="jqGrid/css/ui.jqgrid.css" rel="stylesheet" />
<script type="text/javascript" src="jqGrid/js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="jqGrid/js/jquery.jqGrid.min.js"></script>
<script type="text/javascript" src="jqGrid/js/i18n/grid.locale-ja.js"></script>


<script type="text/javascript">
    $(function() {
        //列の設定
        var colModelSettings= [

            //チェックボックス
            {name:"radio",index:"radio",width:50,align:"center",classes:"radio_class"
                ,edittype:"checkbox",formatter:"checkbox",editable:true,formatoptions: {disabled : false}},

            //ラジオボタン
         /* {name:"radio",index:"radio",width:50,align:"center",classes:"radio_class",
             formatter:function(cellvalue, options, rowObject){
             return '<input type="radio" name="radio" value="' + options.rowId + '">';}}, */

            {name:"no",index:"no",width:70,align:"center",classes:"no_class"},
            {name:"name",index:"name",width:200,align:"center",classes:"name_class"},
            {name:"age",index:"age",width:200,align:"center",classes:"age_class"},
            {name:"local",index:"local",width:200,align:"center",classes:"local_class"},
            {name:"hobby",index:"hobby",width:200,align:"center",classes:"hobby_class"}
        ];

        //列の表示名
        var colNames = ["","No.","name","age","local","hobby"];

        var date = [
                    {no:1,name:"nakagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"attta",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"nakagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"nakagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"nakagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"omoawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"nsiraagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"nakagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"nakagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"nakagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"nakagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"nakagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"nakagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"nakagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"nakagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:1,name:"nakagawa",age:20,local:"Japan",hobby:"Tennis"},
                    {no:2,name:"nakayama",age:20,local:"Japan",hobby:"Soccer"}
                ];

        //テーブルの作成
        $("#sample1").jqGrid({
            data:date,  //表示したいデータ
            datatype : "local",            //データの種別 他にjsonやxmlも選べます。
                                               //しかし、私はlocalが推奨です。
            colNames : colNames,           //列の表示名
            colModel : colModelSettings,   //列ごとの設定
            rowNum : 10,                   //一ページに表示する行数
            rowList : [1, 10, 20],         //変更可能な1ページ当たりの行数
            caption : "Sample Display",    //ヘッダーのキャプション
            height : 200,                  //高さ
            width : 700,                   //幅
            pager : 'pager1',              //footerのページャー要素のid
            regional : 'ja',
            shrinkToFit : true,       //画面サイズに依存せず固定の大きさを表示する設定
            viewrecords: true,             //footerの右下に表示する。
        });

        //検索追加
        $("#sample1").jqGrid('navGrid','#pager1',{
            add:false,   //おまじない
            edit:false,  //おまじない
            del:false,   //おまじない
            search:{     //検索オプション
                odata : ['equal', 'not equal', 'less', 'less or equal',
                                 'greater','greater or equal', 'begins with',
                                 'does not begin with','is in','is not in','ends with',
                                 'does not end with','contains','does not contain']
            }   //検索の一致条件を入れられる
        });

        //filterバー追加
        $("#sample1").filterToolbar({
            defaultSearch:'cn'     //一致条件を入れる。
                                   //選択肢['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>


2.表示

a.JPG



参照
http://acro-engineer.hatenablog.com/entry/20110715/1310683073

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8