jqGrid增删改查显示——删除+nodejs后台

来源:互联网 发布:常用的外文数据库 编辑:程序博客网 时间:2024/05/22 14:44
本篇文章只介绍jqGrid删除操作,希望能帮到大家~!有不正确的请指出!谢谢!微笑微笑

本篇文章代码在以下一篇代码基础上修改:
jqGrid显示:http://blog.csdn.net/tangjiarao/article/details/50454695


PS:行id冲突(行编辑有需要看看):

http://blog.csdn.net/tangjiarao/article/details/50461445


演示效果:



核心代码:

$(document).ready(function () {        $.ajax({//先用ajax与后台交互获取要显示的数据                    url: "/userFindAction",//与后台交互的url                    type: "GET",//ajax提交方式                    dataType: "json",//从服务器端返回的数据类型                    success: function (data) {                        //data是从服务器返回的json对象,其中result是我要显示的数据内容                        window.datas = data.result;                        //设置content-pager高度                        $(".content-pager").height($(window).height() - 400);                        //数据成功拿到后就渲染jqgrid                        // 配置jqGrid的属性                        jQuery("#jqGrid01").jqGrid({                            data: datas,//从服务器拿来的数据                            datatype: "local",//显示数据的方式,因为通过ajax拿到数据了,所以是本地的                            jsonReader: {//描述json 数据格式的数组                                repeatitems: false// 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素(即可以json中元素可以不按顺序);而所使用的name是来自于colModel中的name设定。                            },                            height: $('.content-pager').height(), // Auto height step 2,                            rowNum: 10,//在grid上初始显示记录条数                            rowList: [10, 20, 30],//一个下拉选择框,用来改变显示记录数                            colNames: ['userId', 'userName', 'accountName', 'accountPassword', 'roleType', 'schoolName', 'schoolClassName', 'active',''],//列显示名称,是一个数组对象                            colModel: [//配置显示的列属性                                /**                                 *  对应后台返回数据datas中的userId                                 *  hidden:控制该列不显示                                 */                                {name: 'userId', index: 'userId', width: 60,hidden:true},                                /**                                *  对应后台返回数据datas中的userName                                *  editable:定义字段是否可编辑                                */                                {                                    name: 'userName',                                    index: 'userName',                                    width: 100,                                    editable: true,                                    editoptions: {size: "20", maxlength: "30"}//当执行修改和新增的操作时,会显示输入框,输入框的配置                                },                                /**                                *  对应后台返回数据datas中的accountName                                *  editable:定义字段是否可编辑                                */                                {                                    name: 'accountName',                                    index: 'accountName',                                    width: 100,                                    editable: true,                                    editoptions: {size: "20", maxlength: "30"}                                },                                /**                                *  对应后台返回数据datas中的accountPassword                                *  search:定义此列是否可以作为搜索列                                *  注:由于不想让用户看到密码,所以将改列的内容改为一个重置按钮,点击可以修改密码                                */                                {                                    name: 'accountPassword',                                    index: 'accountPassword',                                    width: 120,                                    search:false                                },                                /**                                *  对应后台返回数据datas中的roleType                                *  editrules:设置编辑字段的控件的规则                                *  edittype:控件该字段在修改或者新增时类型 select为下拉菜单                                */                                {                                    name: 'roleType',                                    index: 'roleType',                                    width: 80,                                    editable: true,                                    editrules: true,                                    edittype: "select",                                },                                /**                                *  对应后台返回数据datas中的schoolName                                */                                {                                    name: 'schoolName',                                    index: 'schoolName',                                    width: 150,                                    editable: true,                                    editrules: true,                                    edittype: "select",                                    editoptions: {                                        dataEvents: [//给当前控件追加事件处理                                            {                                                type: 'change',                 //下拉选择的时候                                                fn: function (e) {              //触发方法                                                    //获取当前下拉框的id名字(这是点击编辑按钮时才需要的,因为点击编辑按钮后,schoolName的下拉框会变成1_schoolName,其中”1“是行号)                                                    var itemName = this.id;                                                    var selectNum = itemName.match(/^\d+/);//(这是点击编辑按钮时才需要的)将id中的数字获取出来,编辑时就会对id为selectNum的行进行操作                                                    var schoolName =this.value; //获取选中的学校名称                                                    getSchoolClass(selectNum,schoolName); //调用获取班级data的方法                                                }                                            }                                        ]                                    }                                },                                /**                                *  对应后台返回数据datas中的schoolClassName                                *  value:在修改或者新增时下拉框显示的数据                                */                                {                                    name: 'schoolClassName',                                    index: 'schoolClassName',                                    width: 150,                                    editable: true,                                    edittype: "select",                                    editoptions: {value: {'请选择班级': '请选择班级'}}                                },                                /**                                *  该字段是在前端自定义的字段                                *  sortable:设置该字段是否进行排序                                */                                {                                    name: 'active', index: 'active', width: 60,sortable : false                                },                                /**                                *  改列显示编辑、保存、重置按钮,在编辑操作会用到                                */                                {                                    name : 'act',index : 'act',width : 75,sortable : false,search:false                                },                            ],                            pager: "#jqGridPager01",//定义翻页用的导航栏,必须是有效的html元素(即定义的div块)。                            viewrecords: true,//定义是否要显示总记录数                            caption: "User Management",//表格名称                            hidegrid: false,//启用或者禁用控制表格显示、隐藏的按钮,只有当caption 属性不为空时起效                            multiselect: true,//定义是否可以多选                            altRows: true,                            rownumbers: true,//如果为ture则会在表格左边新增一列,显示行顺序号                            /**                             *   当从服务器返回响应时执行的方法                             *   ----我的理解是加载表格完成后执行的方法----                             */                            loadComplete: function () {                                //获取学校data                                getSchool();                                //获取roleType                                getRole();                                //设置Reset按钮                                setReset();                                //设置最后一列的修改按钮                                setEdit();                            },                        });                        // 配置导航条属性                        jQuery("#jqGrid01").navGrid('#jqGridPager01', {                            //设置为false需要自己重新重新该方法                            edit: false,                            add: false,                            del: false,                            search: true                        },{},{},{},{multipleSearch:true})                                /**                                 *  增加自定义按钮——add按钮                                 *  参数1:导航条div名称                                 *  参数2:按钮名称,可以为空                                 *  参数3:按钮的图标,string类型,必须为jquery UI theme图标                                 *  onClickButton:点击该按钮时候的操作                                 */                                .navButtonAdd('#jqGridPager01', {                                    caption: "", buttonicon: "ui-icon-circle-plus", onClickButton: function () {                                        //增加一行操作                                        addRows();                                    },                                    position: "first"//first或者last,按钮位置                                })                                .navButtonAdd('#jqGridPager01', {                                    caption: "", buttonicon: "ui-icon-trash", onClickButton: function () {                                        //删除一行操作                                        removeRows();                                    },                                    position: "first"                                })                                //分隔符                                .navSeparatorAdd("#jqGridPager01", {sepclass: "ui-separator", sepcontent: ''});                        $("#jqGrid01").jqGrid('setGridWidth', $(".content-pager").width(), true);                    },                    error: function () {                    }                }        );    });


removeRows()就是删除操作调用的方法

.navButtonAdd('#jqGridPager01', {                 caption: "", buttonicon: "ui-icon-trash", onClickButton: function () {                       //删除一行操作                       removeRows();                 },                 position: "first"})

removeRows();

 function removeRows(){        //alert("really delete the selected item?");        //获取多行的id,是个Array        var selectedRowIds = $("#jqGrid01").jqGrid("getGridParam", "selarrrow");        //判断是否为空        if(selectedRowIds==""){            window.wxc.xcConfirm("请选择要删除的行!", window.wxc.xcConfirm.typeEnum.info);        }        else{            var txt=  "是否删除用户";            var option = {                title: "信息",                btn: parseInt("0011",2),                onOk: function(){                    //取出本地user数据中的对应行Id的数据userId,并且放到一个数据中                    var len = selectedRowIds.length;                    var userId =new Array();                    for (var i = 0; i <len; i++) {                        userId[i]=datas[selectedRowIds[i]-1].userId;                    }                    //post userId组到后台,让后台删除(PS:这里是我的逻辑实现,我的后台是对userId进行删除的)                    $.ajax({                        type: "post",                        url: "/userRemoveAction",                        data: {userId:userId},                        dataType: "json",                        success: function (data) {                            //判断后台是否删除成功                            //如果成功则调用jqGrid的delRowData方法逐个删除行id                            if(data.success==1){                                for (var i = 0; i < len; i++) {                                    $("#jqGrid01").jqGrid("delRowData", selectedRowIds[0]);                                }                            }                        }                    });                }            }            window.wxc.xcConfirm(txt, "custom", option);        }    }

可能有人看到这段代码会很不解,为什么要这么删除:

<span style="white-space:pre"></span>    //判断后台是否删除成功                            //如果成功则调用jqGrid的delRowData方法逐个删除行id                            if(data.success==1){                                for (var i = 0; i < len; i++) {                                    $("#jqGrid01").jqGrid("delRowData", selectedRowIds[0]);                                }                            }
解释博客:http://blog.csdn.net/drykilllogic/article/details/6112516

相关文章:

http://blog.csdn.net/tangjiarao/article/details/50456160  联动下拉
http://blog.csdn.net/tangjiarao/article/details/50460146  增加
http://blog.csdn.net/tangjiarao/article/details/50460780  修改
http://blog.csdn.net/tangjiarao/article/details/50461998  查找

参考文章:

http://www.w3dev.cn/article/20130703/jqGrid-form-editing-config.aspx

http://blog.csdn.net/zgjsczwj/article/category/1193882

http://blog.mn886.net/jqGrid/

0 0
原创粉丝点击