使用nodejs,express,mysql,Bootstrap开发采购招标网站(三)Bootstrap-table实现Ajax删除数据

这几天感冒,吃了药以后混混欲睡的,学习笔记就耽搁, 这两天在实现Bootstrap-table使用ajax删除数据,真是感觉一个脑袋两个大,完全是无从下手,从网上搜罗的代码看着不明就里,不明白是怎么实现的。今天在jquey帮助文档里找到了例子,算是基本明白原理了。下面记一下实现的过程:

前台页面创建bootstrap-table:


引入对应的js文件:

        
        
        

在zzManager.js里初始化表格:

$(function () {
    //1.初始化Table
    var oTable = new TableInit();
    oTable.Init();
    //2.初始化Button的点击事件
   /* var oButtonInit = new ButtonInit();
    oButtonInit.Init();*/

});


var TableInit = function () {
    var oTableInit = new Object();
    //初始化Table
    oTableInit.Init = function () {
        $('#tb_zzManager').bootstrapTable({
            url: '/GetZZInfo',         //请求后台的URL(*)
            method: 'get',                      //请求方式(*)
            /*toolbar: '#toolbar',                //工具按钮用哪个容器
            striped: true,                      //是否显示行间隔色
            cache: false,                       //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
            pagination: true,                   //是否显示分页(*)
            sortable: true,                     //是否启用排序
            sortOrder: "asc",                   //排序方式
            clickToSelect: true,                //是否启用点击选中行
            showToggle:true,                    //是否显示详细视图和列表视图的切换按钮
            cardView: false,                    //是否显示详细视图
            showRefresh:true,                  //是否显示刷新按钮
            showPaginationSwitch:true,       //是否显示选择分页数按钮
            pageNumber:1,                       //初始化加载第一页,默认第一页
            pageSize: 10,                       //每页的记录行数(*)
            search: true,                       //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
            uniqueId: "id",                     //每一行的唯一标识,一般为主键列
            queryParams: oTableInit.queryParams,//传递参数(*)
            sidePagination: "server",           //分页方式:client客户端分页,server服务端分页(*)
            pageList: [10, 25, 50, 100],        //可供选择的每页的行数(*)
            strictSearch: true,
            showColumns: true,                  //是否显示所有的列
            showRefresh: true,                  //是否显示刷新按钮
            minimumCountColumns: 2,             //最少允许的列数
            height: 500,                        //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
            detailView: false, */                  //是否显示父子表
            columns: [{
                field: 'id',
                title: 'myid',
                visible: false
            },  {
                field: 'zzName',
                title: '资质名称',
                editable: true
            }, {
                field: 'zzDetail',
                title: '详细信息',
                editable: true
            }, {//定义操作列
                field: 'operate',
                title: '操作',
                align: 'center',
                events: operateEvents,
                formatter: operateFormatter
            }]
        });
        // sometimes footer render error.
        /*setTimeout(function () {
            $('#tb_departments').bootstrapTable('resetView');
        }, 200);*/
        $('#tb_zzManager').on('click-cell.bs.table',function(field,value,row,$element){
           alert(row);
        });
    };

    //得到查询的参数
   /*oTableInit.queryParams = function (params) {
        var temp = {   //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
            limit: params.limit,   //页面大小
            offset: params.offset,  //页码
            departmentname: $("#txt_search_departmentname").val(),
            statu: $("#txt_search_statu").val()
        };
        return temp;
    };*/

    return oTableInit;
};
初始化操作列,增加删除和保存两个按钮:

function operateFormatter(value, row, index) {
    return [
        '',
        '',
        '  ',
        '',
        '',
        ''
    ].join('');
}
使用Ajax向后台传参,我现在只实现了删除操作:

window.operateEvents = {
    'click .remove': function (e, value, row, index) {
        $('#tb_zzManager').bootstrapTable('remove', {
            field: 'id',
            values: [row.id]
        });
        $.ajax({
            url:'/zzOperate?opr=del&id='+row.id,
            method:'get'
        })
            .done(function(msg){
                alert(msg);
            });
    },
    'click .save': function (e, value, row, index) {

    }
};

后台配置路由进行处理:

router.route('/zzOperate')
    .get(function(req,res){
        console.log('进入了资质管理删除方法,id='+req.query.id);
        var stropr = req.query.opr;
        var id = req.query.id;
        if(stropr==='del')
        {
            user1dao.delZZInfoByID(id,function(result){
                if(result){
                    res.send('删除失败');
                }else{
                    res.send('删除成功');
                }
            });
        }
    });

这里要说一点,router.route()设置的路径如果相同,程序会处理遇到第一个方法,碰到同样的路径会忽略,我就是因为设置的路径同访问页面设置的路径相同,结果测了半天不知道为什么进不了这个方法。。。菜鸟的无奈啊。不过能把这个功能实现感觉很有成就感。现在准备去实现保存的功能,明天见。





你可能感兴趣的:(nodejs)