JQGrid詳細教程(一)

JQGrid是基于jquery的一套強大的表格插件,近期使用到了,特此記錄下來

引入依賴就不多說啦

<script>
    $(document).ready(function () {

        $.jgrid.defaults.styleUI = 'Bootstrap';//指定主題為Bootstrap

        $("#table_list_2").jqGrid({

            height: 450,
            autowidth: true,
            shrinkToFit: true,
            url: "/user/users",//請求數據地址
            editurl: "/user/oper",//增刪改查操作后臺地址
            datatype: "json",
            rowNum: 10,
            rowList: [10, 15, 25],//分頁屬性
            jsonReader: {//此屬性為對應后臺的json數據轉化
                id: "id",
                root: "data", page: "page", total: "rows",          //   很重要 定義了 后臺分頁參數的名字昼汗。
                records: "totalCount", repeatitems: false
            },
            mtype: "post",//請求方式
            colNames: ['UID', '登錄名', '真實姓名', '密碼', '手機號', '注冊日期', '角色', '狀態(tài)', '操作'],//表頭名
            colModel: [//與colNames一一對應
                {//具體屬性請參考官方文檔
                    name: 'uid',
                    index: 'uid',
                    editable: true,
                    hidedlg: true,
                    width: 60,
                    hidden: true,
                    sorttype: "int",
                    align: "center",
                    search: true,
                    key: true
                },
                {
                    name: 'ucode',
                    index: 'ucode',
                    editrules: {
                        required: true,
                        custom: true,//這里是自定義校驗規(guī)則
                        custom_func: function (value, colNames) {
                            if (!(/^[a-zA-Z0-9_\.]+$/.test(value)) || !(/^\S{5,11}$/.test(value))) {
                                return [false, "登錄名格式錯誤"];
                            } else {
                                return [true, ""];
                            }
                        }
                    },
                    editable: true,
                    width: 80,
                    align: "center",
                    sorttype: "date",
                },
                {
                    name: 'uname',
                    index: 'uname',
                    editable: true,
                    align: "center",
                    width: 80,
                    editrules: {
                        required: true,
                        custom: true,
                        custom_func: function (value, colNames) {
                            if (!(/^[\u4e00-\u9fa5]{2,4}$/.test(value))) {
                                return [false, "姓名格式錯誤"];
                            } else {
                                return [true, ""];
                            }
                        }
                    }
                },
                {
                    name: 'upwd',
                    index: 'upwd',
                    editable: true,
                    hidden: true,
                    align: "center",
                    width: 100,
                    search: false
                },
                {
                    name: 'uphone',
                    index: 'uphone',
                    editable: true,
                    width: 80,
                    align: "center",
                    sorttype: "float",
                    editrules: {
                        required: true,
                        custom: true,
                        custom_func: function (value, colNames) {
                            if (!(/^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/.test(value))) {
                                return [false, "手機號格式錯誤"];
                            } else {
                                return [true, ""];
                            }
                        }
                    }
                },
                {
                    name: 'uredate',
                    index: 'uredate',
                    editable: false,
                    width: 80,
                    formatter: "date",//這里是日期格式化器
                    formatoptions:
                        {
                            srcformat: 'Y-m-d H:i:s',
                            newformat: 'Y-m-d H:i:s'
                        },
                    align: "center",
                    sorttype: "date",
                    search: false
                },
                {
                    name: 'rolenames',
                    index: 'rolenames',
                    editable: false,
                    width: 80,
                    align: "center",
                    search: false
                },
                {
                    name: 'ustatus',
                    index: 'ustatus',
                    editable: false,
                    width: 80,
                    formatter:
                    statusFormate,
                    align: "center",
                    search: false
                },
                {
                    name: 'uoper',
                    index: 'uoper',
                    editable: false,
                    width: 80,
                    formatter:
                    operFormate,
                    align: "center",
                    search: false
                }
            ],
            pager: "#pager_list_2",
            viewrecords: true,
            add: true,
            edit: true,
            addtext: 'Add',
            edittext: 'Edit',
            hidegrid: false,
            altRows: true,//單雙行樣式不同
            altclass: 'differ',
            rownumbers: true,
            gridComplete://在表格初始化后執(zhí)行
            genSwitch
        })
        ;

        //初始化swithc
        function genSwitch() {
            $(".checkbox").bootstrapSwitch({
                onText: "正常",      // 設置ON文本
                offText: "禁用",    // 設置OFF文本
                onColor: "success",// 設置ON文本顏色     (info/success/warning/danger/primary)
                offColor: "danger",  // 設置OFF文本顏色        (info/success/warning/danger/primary)
                size: "small",    // 設置控件大小,從小到大  (mini/small/normal/large)
                handleWidth: "35",//設置控件寬度
                // 當開關狀態(tài)改變時觸發(fā)
                onSwitchChange: function (event, data, state) {
                    var uid = $(this).data('id');
                    var type = $(this).data('type');
                    $.ajax({
                        type: 'get',
                        url: '/user/status?uid=' + uid + '&type=' + type,
                        success: function (result) {
                            layer.msg(result.message);

                            /*$("#table_list_2").jqGrid('clearGridData'); //清空表格
                            $("#table_list_2").jqGrid('setGridParam', { // 重新加載數據
                                page: 1
                            }).trigger("reloadGrid");*/
                            jQuery("#table_list_2").trigger("reloadGrid");
                        }, //請求失敗步脓,包含具體的錯誤信息
                        error: function (e) {
                            console.log(e.status);
                        }
                    })
                }
            });
        }

        //狀態(tài)設置
        function statusFormate(cellValue, options, rowObject) {
            var check = "";
            if (cellValue == 0) {
                check = "checked";
            }
            return "<input type='checkbox' " + check + " class='checkbox' data-type=" + rowObject.ustatus + " data-id=" + rowObject.uid + ">";
        }
        genDialog = function (uid) {
            $('#currUser').val(uid);
            layer.open({
                type: 2,
                title: '分配角色',
                maxmin: true,
                shadeClose: true, //點擊遮罩關閉層
                area: ['450px', '400px'],
                content: '/pages/user/user_detail'
            });
        }

        genResetDialog = function (uid) {
                swal({
                    title: "您確定要重置其密碼為123456嗎?",
                    text: "請謹慎操作糠惫!",
                    type: "warning",
                    showCancelButton: true,
                    confirmButtonColor: "#DD6B55",
                    confirmButtonText: "確定",
                    cancelButtonText: "取消"
                }).then(function (isConfirm) {
                    console.log(isConfirm);
                    if (isConfirm.value) {
                        $.ajax({
                            type: 'get',
                            url: '/user/newpwd?uid=' + uid + '&newpwd=123456',
                            success: function (result) {
                                swal("重置成功!", "該用戶密碼已重置", "success");
                                jQuery("#table_list_2").trigger("reloadGrid");
                            }, //請求失敗苦始,包含具體的錯誤信息
                            error: function (e) {
                                console.log(e.status);
                            }
                        });
                    } else{
                        swal("已取消", "您取消了操作寞钥!", "error");
                    }
                });
        };

        // Add selection
        //$("#table_list_2").setSelection(4, true);

        //$.jgrid.gridUnload("filterGrid");//先卸載

        // Setup buttons
        $("#table_list_2").jqGrid('navGrid', '#pager_list_2',
            {
                edit: false,//禁用其自帶的增刪改查按鈕,方便與我們自己添加
                add: false,
                del: false,
                search: false,
                refresh: false,
                view: false,
                position: "left",
                cloneToTop: false
            });
        <@shiro.hasRole name="admin">
        // 添加一個‘添加’按鈕
        $('#table_list_2').navButtonAdd('#pager_list_2',
            {
                buttonicon: "glyphicon glyphicon-plus",
                title: "添加",
                caption: "添加",
                width: 30,
                position: "last",
                onClickButton: function () {
                    jQuery("#table_list_2").jqGrid('editGridRow', "new", {//增加新的一行操作
                        height: 250,
                        closeAfterAdd: true,
                        reloadAfterSubmit: true//添加完成后自動刷新
                    });
                }
            });


        // 添加一個‘編輯’按鈕
        $('#table_list_2').navButtonAdd('#pager_list_2',
            {
                buttonicon: "glyphicon glyphicon-edit",
                position: "last",
                title: "編輯",
                caption: "編輯",
                onClickButton: function () {
                    var gr = jQuery("#table_list_2").jqGrid('getGridParam', 'selrow');
                    if (gr != null) jQuery("#table_list_2").jqGrid('editGridRow', gr, {
                        height: 250,
                        closeAfterEdit: true,
                        reloadAfterSubmit: true
                    });
                    else layer.msg("請選中一行以編輯陌选!");
                }
            });
        </@shiro.hasRole>
        //添加一個‘刪除’按鈕
        $('#table_list_2').navButtonAdd('#pager_list_2',
            {
                buttonicon: "glyphicon glyphicon-trash",
                title: "刪除",
                caption: "刪除",
                position: "last",
                onClickButton: function () {
                    var rowid = jQuery("#table_list_2").jqGrid('getGridParam', 'selrow');//獲取選中行ID
                    var rowData = jQuery("#table_list_2").jqGrid("getRowData", rowid);//根據選中行ID獲取行數據
                    var delUid = rowData.uid
                    if (rowid != null) jQuery("#table_list_2").jqGrid('delGridRow', delUid, {reloadAfterSubmit: true});
                    else layer.msg("請選中一行以刪除理郑!");
                }
            });

        //添加一個‘刷新’按鈕
        $('#table_list_2').navButtonAdd('#pager_list_2',
            {
                buttonicon: "glyphicon glyphicon-refresh",
                title: "刷新",
                caption: "刷新",
                position: "last",
                onClickButton: function () {
                    /*$("#table_list_2").jqGrid('clearGridData'); //清空表格
                    $("#table_list_2").jqGrid('setGridParam', { // 重新加載數據
                        page: 1
                    }).trigger("reloadGrid");*/
                    jQuery("#table_list_2").trigger("reloadGrid");
                }
            });
        //添加一個‘搜索’按鈕
        $('#table_list_2').navButtonAdd('#pager_list_2',
            {
                buttonicon: "glyphicon glyphicon-search",
                title: "搜索",
                caption: "搜索",
                position: "last",
                onClickButton: function () {
                    jQuery("#table_list_2").jqGrid('searchGrid', {sopt: ['cn']});
                }
            });

        // Add responsive to jqGrid
        $(window).bind('resize', function () {
            var width = $('.jqGrid_wrapper').width();
            $('#table_list_2').setGridWidth(width);
        });
    });
</script>

后續(xù)更多JQGrid相關操作后陸續(xù)更新
如:樹表格,自定義彈窗等

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末咨油,一起剝皮案震驚了整個濱河市您炉,隨后出現的幾起案子,更是在濱河造成了極大的恐慌役电,老刑警劉巖赚爵,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異法瑟,居然都是意外死亡冀膝,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門霎挟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窝剖,“玉大人,你說我怎么就攤上這事酥夭〈蜕矗” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵熬北,是天一觀的道長疙描。 經常有香客問我,道長讶隐,這世上最難降的妖魔是什么起胰? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮整份,結果婚禮上待错,老公的妹妹穿的比我還像新娘籽孙。我一直安慰自己,他們只是感情好火俄,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布犯建。 她就那樣靜靜地躺著,像睡著了一般瓜客。 火紅的嫁衣襯著肌膚如雪适瓦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天谱仪,我揣著相機與錄音玻熙,去河邊找鬼。 笑死疯攒,一個胖子當著我的面吹牛嗦随,可吹牛的內容都是我干的。 我是一名探鬼主播敬尺,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼枚尼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了砂吞?” 一聲冷哼從身側響起署恍,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜻直,沒想到半個月后盯质,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡概而,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年呼巷,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赎瑰。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡朵逝,死狀恐怖,靈堂內的尸體忽然破棺而出乡范,到底是詐尸還是另有隱情,我是刑警寧澤啤咽,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布晋辆,位于F島的核電站,受9級特大地震影響宇整,放射性物質發(fā)生泄漏瓶佳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一鳞青、第九天 我趴在偏房一處隱蔽的房頂上張望霸饲。 院中可真熱鬧为朋,春花似錦、人聲如沸厚脉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽傻工。三九已至霞溪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間中捆,已是汗流浹背鸯匹。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泄伪,地道東北人殴蓬。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像蟋滴,于是被迫代替她去往敵國和親染厅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內容

  • 插件實現方式1脓杉、聲明立即調用函數 定義一個立即調用的函數聲明糟秘,如代碼清單2-1所示。在參數里傳入jQuery對象球散,...
    MakingChoice閱讀 2,365評論 0 3
  • 還珠格格 Claire 3.7 之前看了篇文章說還珠1.2和3的劇情走向差別那么大尿赚,因為瓊瑤在寫這兩部劇時所存在的...
    ClaireMMM閱讀 176評論 0 0
  • 尊敬的各位領導,各位同仁: 大家上午好蕉堰!我今天和大家分享的主題是凌净,《不忘初心,相信未來》屋讶。 我是來自白云寺鎮(zhèn)的一名...
    N1115丁麗閱讀 175評論 0 0
  • 最親愛的媽媽: 媽!您最近好嗎乐疆?我很好划乖,吃的好,穿的暖挤土,您不用太擔心琴庵。 最近看了一部名為《女兒》的電影,媽媽,想要...
    鬼沫閱讀 330評論 1 4