jqGrid 实现排序(绑定动态数据和本地数据)

1 实现排序(绑定动态数据)

function initGrid(gridId){
    jQuery("#"+gridId).jqGrid({
        url:"/loginLog/getLoginLogExtList",
        postData:{},
        datatype: 'json',
        height: $(window).height() - 115,
        width: $(window).width() - 7,
        rownumbers: true, //行号
        pager: "#pager",
        recordtext: "第{0} - {1}条  共 {2} 条",
        pgtext: '当 前 页 {0} 总 共 {1}页',
        rowNum: 50,
        rowList: [50, 100,150],
        autowidth: false,
        viewrecords: true,
        loadonce: true,
        sortable: true,
        colModel: colModel:[
            {label:"用户名",name:"username",index:"username",width:"150",align:"center",sortable: true},
            {label:"昵称",name:"pickname",index:"pickname",width:"150",align:"center"},
            {label:"登陆时间",name:"loginTime",index:"loginTime",width:"200",align:"center"},
            {label:"登陆城市",name:"loginArea",index:"loginArea",width:"200",align:"center"},
            {label:"ISP运营商",name:"loginIsp",index:"loginIsp",width:"100",align:"center"},
            {label:"IP",name:"loginIp",index:"loginIp",width:"150",align:"center"}
        ],
    });
}

2 实现排序(绑定本地数据)

有两种数据绑定方法(addJSONData和addRowData)

2.1 填充数据+自动排序

实现步骤:

第1步,给要排序的列加上sortable: true。

第2步,添加onSortCol()事件。

第3步,清空jqGrid的数据。

第4步,往jqGrid中填充数据。

function initGrid(gridId,gridData){
    $.jgrid.gridUnload(gridId);
    $("#"+gridId).jqGrid({
        datatype: 'local',
        width: $(window).width()-250,
        height:$(window).height()-240,
        rownumWidth:50,
        rowNum: 20, //在grid上显示记录条数,这个参数是要被传递到后台
        rowList: [20, 30, 50],
        shrinkToFit:false,
        loadonce:true,//开启分页
        colModel:[
            {label:"用户名",name:"username",index:"username",width:"150",align:"center",sortable: true},
            {label:"昵称",name:"pickname",index:"pickname",width:"150",align:"center"},
            {label:"登陆时间",name:"loginTime",index:"loginTime",width:"200",align:"center"},
            {label:"登陆城市",name:"loginArea",index:"loginArea",width:"200",align:"center"},
            {label:"ISP运营商",name:"loginIsp",index:"loginIsp",width:"100",align:"center"},
            {label:"IP",name:"loginIp",index:"loginIp",width:"150",align:"center"}
        ],
        onSortCol: function (index, colindex, sortorder) {//填充数据
            $("#"+gridId).jqGrid("clearGridData");
            for (var i = 0; i < gridData.length; i++) {
                $("#datagrid").jqGrid('addRowData',i+1,gridData[i]);
            }
        }
    });
    //第一种绑定数据方法
    $('#'+gridId)[0].addJSONData(gridData);
    //第二种绑定数据方法
    //for (var i = 0; i < gridData.length; i++) {
        //$("#"+gridId).jqGrid('addRowData',i+1,gridData[i]);
    //}
}

2.2 填充数据+自定义排序 

实现步骤:

第1步,给要排序的列加上sortable: true。

第2步,添加onSortCol()事件。

第3步,将要填充的数据进行排序。

第4步,清空jqGrid的数据。

第5步,往jqGrid中填充数据。

function initGrid(gridId,gridData){
    $.jgrid.gridUnload(gridId);
    $("#"+gridId).jqGrid({
        datatype: 'local',
        width: $(window).width()-250,
        height:$(window).height()-240,
        rownumWidth:50,
        rowNum: 20, //在grid上显示记录条数,这个参数是要被传递到后台
        rowList: [20, 30, 50],
        shrinkToFit:false,
        loadonce:true,//开启分页
        colModel:[
            {label:"用户名",name:"username",index:"username",width:"150",align:"center",sortable: true},
            {label:"昵称",name:"pickname",index:"pickname",width:"150",align:"center"},
            {label:"登陆时间",name:"loginTime",index:"loginTime",width:"200",align:"center"},
            {label:"登陆城市",name:"loginArea",index:"loginArea",width:"200",align:"center"},
            {label:"ISP运营商",name:"loginIsp",index:"loginIsp",width:"100",align:"center"},
            {label:"IP",name:"loginIp",index:"loginIp",width:"150",align:"center"}
        ],
        gridComplete:function(){
            $('#dataGrid').find(">tbody>tr.jqgrow:odd").addClass("jqGridEvenClass");
        },
        onSortCol: function (index, colindex, sortorder) {//填充数据
            var DataView = null;
            if (sortorder == 'desc') {//降序
                DataView=JSLINQ(jsonData).OrderByDescending(function (x) { return x[index] });
            } else {//升序
                DataView=JSLINQ(jsonData).OrderBy(function (x) { return x[index] });
            }
            if (DataView != null) {
                $("#"+gridId).jqGrid("clearGridData");
                for (var i = 0; i < DataView.items.length; i++) {
                    $("#datagrid").jqGrid('addRowData',i+1,DataView.items[i]);
                }
            }
            return "stop";
        }
    });
    //第一种绑定数据方法
    $('#'+gridId)[0].addJSONData(gridData);
    //第二种绑定数据方法
    //for (var i = 0; i < gridData.length; i++) {
        //$("#"+gridId).jqGrid('addRowData',i+1,gridData[i]);
    //}
}

注:

(1)绑定本地数据后,想要使用jqGrid的自动排序只需在onSortCol()事件中往jqGrid填充数据,onSortCol()事件结束后会自动根据该列自动排序。

(2)绑定本地数据后,想要自定义该列的排序方法,需要在onSortCol()事件结束时返回字符串stop,这样就不会在onSortCol()事件结束后触发该列的自动排序方法,导致自定义排序方法失效。

(3)在往jqGrid填充数据之前使用$("#"+gridId).jqGrid("clearGridData");方法清空jqGrid之前的数据。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值