【jqgrid】表格自定义列可编辑保存并且最后一行添加空白行

主要步骤

1、添加空白行主要在代码loadComplete中

2、表格设置为可编辑状态主要是

表格中:

        cellEdit: true,
        cellsubmit: "clientArray",

表格字段中:editable:true。

3、不能通过获取选中行的数据新增或修改,不准,尤其是加了空白行,主键是空值更不能获取数据了

所以点击按钮的时候传值行号,获取行号为

formatter: function (value, options, row)

中的options["rowId"]

之前一直没用过option,只用过value和row哈哈~

根据行数获取数据

 var ret =  $('#jqGrid').jqGrid('getRowData', rowId);

4、这些做完之后因为每次点保存按钮时,最后一次输入单元格的编辑状态取消不了,值也有问题,是一个input标签,只能点空白处才能取消编辑状态很不方便

所以点保存、删除按钮时,更改下表格的编辑状态

 $('#jqGrid').jqGrid("saveCell", lastRow, lastCell);  //当前单元格退出编辑

这个lastRow和lastCell设置成了全局变量,

每次修改表格时都会给这两个变量赋值这样就不会有问题了

        beforeEditCell: function (rowid, cellname, v, iRow, iCol) {
            lastRow = iRow;  //给全局变量赋值,点保存按钮前推出编辑模式
            lastCell = iCol;
        },

整体js

var lastRow;  //最后修改行号先定义一个全局变量
var lastCell; //最后修改列号
$(function () {
    $("#jqGrid").jqGrid({
        url: '../app/xxx/list',
        datatype: "json",
        viewrecords: true,
        height: '100%',
        rowNum: 1000,
        rowList : [1000,2000,3000,4000],
        autowidth:true,
        altRows: true,
        altclass: 'differ',
        pager: "#jqGridPager",
        cellEdit: true,
        cellsubmit: "clientArray", //当单元格发生变化后不直接发送请求、"remote"默认直接发送请求
        multiselect: true,
        colModel: [
            { label: '行号', name:'id',key: true, width: 40, hidden:true, align:'center'  },
        	{ label: '编号', name:'sequenceid', width: 40,  hidden:true,align:'center' },
            { label: '名称', name: 'name2', width: 20, align:'center' , editable:true,sortable : false},
            { label: '手机号1', name: 'number1', width: 35, align:'center' , editable:true,sortable : false},
            { label: '手机号2', name: 'number2', width: 35, align:'center' , editable:true,sortable : false},
            { label: '手机号3', name: 'number3', width: 35, align:'center' , editable:true,sortable : false},
            { label: '手机号4', name: 'number4', width: 35, align:'center' , editable:true,sortable : false},
            { label: '手机号5', name: 'number5', width: 35, align:'center' , editable:true,sortable : false},
            { label: '操作', name: 'updateData', width: 30, align: 'center', formatter: function (value, options, row) {
                     return '<a onclick="vm.saveOrUpdate(\''+options["rowId"]+'\')" class="label label-primary">保存组</a>' +
                         '<a  onclick="vm.delete(\''+options["rowId"]+'\')"class="label label-danger">删除组</a>';
            } }
        ],
        jsonReader : {
            root: "data.list",
            page: "data.currPage",
            total: "data.totalPage",
            records: "data.totalCount",
            "id":"rn"
        },
        prmNames : {
            page:"page",
            rows:"limit",
            order: "order"
        },
        beforeEditCell: function (rowid, cellname, v, iRow, iCol) {
            lastRow = iRow;  //给全局变量赋值,点保存按钮前推出编辑模式
            lastCell = iCol;
        },
        loadComplete: function(){
            //最后一行新增数据
            var ids = $("#jqGrid").jqGrid('getDataIDs');
            if (ids.length == 0) {
                ids = [0];
            }
            //获得当前最大行号(数据编号)
            var rowid = Math.max.apply(Math, ids);
            //获得新添加行的行号(数据编号)
            var newrowid = rowid + 1;
            var dataRow = {};
            $("#jqGrid").jqGrid("addRowData", newrowid, dataRow, "last");
        }

    });
});
var vm = new Vue({
    el:'#safenumberapp',
    data:{
        showList: true,
        title:null,
        showjqGridPager:true
    },
    methods: {
        ///commit end
        reload: function (event) {
            vm.showList = true;
            vm.showResult = true;
            var page = $("#jqGrid").jqGrid('getGridParam','page');
            $("#jqGrid").jqGrid('setGridParam',{
                page:1
            }).trigger("reloadGrid");
        },
        delete: function (rowId) {
            //获取选择的菜单
            $('#jqGrid').jqGrid("saveCell", lastRow, lastCell);  //当前单元格退出编辑
            var ret =  $('#jqGrid').jqGrid('getRowData', rowId);
            if(ret.sequenceid == "" || ret.sequenceid == null || ret.sequenceid == undefined) {alert("空白行无需删除。");return false;}
            confirm('确定要删除选中的组?', function(){
                $.ajax({
                    type: "POST",
                    url: "../app/delete",
                    data: JSON.stringify(ret.sequenceid),
                    async: false,
                    success: function(r){
                        if(r.status == 200){
                            alert('操作成功', function(index){
                                vm.reload();
                            });
                        }else{
                            alert(r.msg);
                        }
                    }
                });
            });


        }
        saveOrUpdate:function(rowId){
            //获取选择的菜单
            $('#jqGrid').jqGrid("saveCell", lastRow, lastCell);  //当前单元格退出编辑
            var ret =  $('#jqGrid').jqGrid('getRowData', rowId);
            var url = (ret.sequenceid == "" || ret.sequenceid == null || ret.sequenceid == undefined) ? "../app/save" : "../app/update";
            if(!isPhone(ret['number1'])){alert('号码1请输入正确的手机号码');return false};
            if(!isPhone(ret['number2'])){alert('号码2请输入正确的手机号码');return false};
            if(!isPhone(ret['number3'])){alert('号码3请输入正确的手机号码');return false};
            if(!isPhone(ret['number4'])){alert('号码4请输入正确的手机号码');return false};
            if(!isPhone(ret['number5'])){alert('号码5请输入正确的手机号码');return false};
            $.ajax({
                type: "POST",
                url: url,
                data: JSON.stringify(ret),
                async: false,
                success: function(r){
                    if(r.status === 200){
                        alert('操作成功', function(index){
                            vm.reload();
                        });
                    }else{
                        alert(r.msg);
                    }
                }
            });
        }
    }
});
function isPhone(phone) {
    if(!(phone == "" || phone == null || phone == undefined)){
        var myreg=/^1[3-9]\d{9}$/;
        if (!myreg.test(phone)) {
            return false;
        }
    }
    return true;
}

猜你喜欢

转载自blog.csdn.net/mudarn/article/details/114581593