1、jsp和对应的js文件

1.1js

//页面初始化就加载
$(function() {
    //表格列
    /** *dataTables开始** */
    dataTables = $('#articleListTable').DataTable({
        "language": {
            "info": "当前 _START_ - _END_ 条 共 _TOTAL_ 条",
            "paginate": {
                "sFirst": "首页",
                "sPrevious": " < ",
                "sNext": " >",
                "sLast": " 尾页 "
            },
            "emptyTable": "没有符合条件的记录!",
            "lengthMenu": "显示 _MENU_ 条",
            "sZeroRecords": "没有找到匹配的记录",
            "sInfoEmpty": ""
        },
        "aLengthMenu": [10, 20, 50, 100],
        "pagingType": "full_numbers", // 用于指定分页器风格
        // "full_numbers"" or
        // ""two_button"",
        // default
        // ""two_button""
        "bAutoWidth": true,
        "scrollX": true,
        "ajax": {
            "url": path + "/appletManage/mpArticle/queryPage",
            "type": "POST",
            "dataType": "json",
            "data": {
                filter : filter
            }
        },
        "processing": true,
        "serverSide": true,
        "bLengthChange": true,
        "bSort": false, // 排序功能
        "searching": false,
        "bStateSave": false, // 保留分页信息
        "resetPaging": false,
        "dom": '<"top">t<"bottom"lip><"clear">',
        "columns": [
            //数据对应的内容
            {"data": "ord"},
            {"data": "status_flag_nm"},
            {"data": "thumbnail_url"},
            {"data": "title"},
            //操作按钮,样式靠右
            {"data": "","class": "align-right"}
        ],
        "columnDefs": [
            {
                "render": function(data, type, row, meta) {
                    //序号列
                    return meta.row + 1 + meta.settings._iDisplayStart;
                },
                "orderable": false,
                //表示第一列
                "targets": 0
            },
            {
                //如果表格中要显示图片,可以修改样式
                "render": function(data, type, row) {
                    var html = "<img style=\"height: 50px;width:50px;\" src=" + row.thumbnail_url +" />"; //缩略图
                    return html;
                },
                "orderable": false,
                "targets": 2
            }, {
                "render":function(data,type,full){
                    return "<div class=\"table_td_nowrap_40\" title=\""+data+"\">"+data+"</div>";
                },
                "targets": 3
            },{
                "render": function(data, type, row, meta) {
                    var html = "";//编辑按钮
                    html += '<input class="btn btn-mini btn-white btn-purple" type="button" value="查看"  onclick="articleShow(\'' + row.id + '\',\'true\',\'view\')"/>';
                    html += '<input class="btn btn-mini btn-white btn-purple" type="button" value="编辑"  onclick="articleShow(\'' + row.id + '\',\'false\',\'edit\')"/>';
                    if(row.status_flag == "Y"){
                        html += '<input class="btn btn-mini btn-white btn-purple" type="button" value="禁用" onclick="articleState(\'' + row.id + '\',\'N\')"/>';
                    }else{
                        html += '<input class="btn btn-mini btn-white btn-purple" type="button" value="启用" onclick="articleState(\'' + row.id + '\',\'Y\')"/>';
                    }
                    html += '<input class="btn btn-mini btn-white btn-purple" type="button" value="删除"  onclick="articleDelete(\'' + row.id + '\',\'false\',\'edit\')"/>';
                    html += '<input class="btn btn-mini btn-white btn-purple" type="button" value="上移" onclick="updateOrd(\'' + row.id + '\',\'up\',\''+row.ord+'\','+(meta.row)+')"/>';
                    html += '<input class="btn btn-mini btn-white btn-purple" type="button" value="下移" onclick="updateOrd(\'' + row.id + '\',\'down\',\''+row.ord+'\','+(meta.row)+')"/>';
                    return html;
                },
                "orderable": false,
                "targets": 4
            }]

    });

});

1.2jsp

<!--第一点,列个数要和js对应-->
<!--第二点,table的id要和js对应-->
<table id="articleListTable"
       class="table table-striped table-hover dataTable"
       cellspacing="0">
    <thead>
        <tr>
            <th>序号</th>
            <th>显示状态</th>
            <th>缩略图</th>
            <th>标题</th>
            <th>操作</th>
        </tr>
    </thead>
</table>

2、上移下移操作

2.1、js文件

/**
 * 上移下移
 * */
function updateOrd(id,type,ord,rowIndex){

    if(dataTables.rows()&& dataTables.rows().data()){
        var data = dataTables.rows().data();

        var nextIndex = 0;
        if(type == "up" && rowIndex == 0 ){
            $.zkbr.alert("错误信息", "已经是第一条数据");
            return false;
        }

        if(type == "down" && rowIndex == (data.length - 1)){
            $.zkbr.alert("错误信息", "已经最后一条数据");
            return false;
        }

        if(type == "up"){
            nextIndex = rowIndex - 1;
        } else {
            nextIndex = rowIndex + 1;
        }

        //        console.log(data[nextIndex])

        $.ajax({
            url: path+"/appletManage/mpArticle/updateOrd",
            type:"post",
            dataType:"json",
            params: null,
            data : {
                "id": id,
                "ord": data[nextIndex].ord,
                "nextId": data[nextIndex].id,
                "nextOrd": ord
            },
            success:function(data){
                if (data.statusCode == '200') {
                    // 返回后显示方案状态为已初审分配
                    dataTables.ajax.reloadData({filter : filter});
                } else {
                    $.zkbr.alert("错误信息", data.errorMsg);
                }
            }
        })
    }
}

2.2、controller

/**
     * 上移下移,交换排序
     * 
     * @param id     文章ID
     * @param ord    旧的排序
     * @param newOrd 新的排序
     * @return
     */
@ResponseBody
@RequestMapping(value = "/updateOrd")
public AjaxResult updateOrd(String id, Integer ord, String nextId,Integer nextOrd) {
    if (null == id || StringUtils.isEmpty(id)) {
        return new AjaxResult().fail("500", "当前行ID不能为空");
    }

    if (null == ord) {
        return new AjaxResult().fail("500", "当前行序号不能为空");
    }

    if (null == nextId) {
        return new AjaxResult().fail("500", "移动行的ID不能为空");
    }

    if (null == nextOrd) {
        return new AjaxResult().fail("500", "移动行序号不能为空");
    }
    Map<String, Object> articleInfo = service.getOne(new HashMap<String, Object>() {
        private static final long serialVersionUID = 1L;
        {
            put("id", id);
        }
    });
    if (null == articleInfo) {
        return new AjaxResult().fail("500", "数据不存在");
    }

    UserInfo userInfo = UserContext.getCurrentUser();
    //更新当前行
    service.updateOrd(new HashMap<String, Object>() {
        private static final long serialVersionUID = 1L;
        {
            put("id", id);
            put("ord", ord);
            put("update_user", userInfo.getUserId());
        }
    });

    //更新互换的行
    service.updateOrd(new HashMap<String, Object>() {
        private static final long serialVersionUID = 1L;
        {
            put("id", nextId);
            put("ord", nextOrd);
            put("update_user", userInfo.getUserId());
        }
    });

    return new AjaxResult().success200();
}

2.3、service

/**
     * 修改序号
     * 
     * @param map
     */
public void updateOrd(Map<String, Object> map);

2.4、serviceImpl

/**
     * 修改序号
     * 
     * @param map
     */
@Override
public void updateOrd(Map<String, Object> map) {
    baseDao.update(getTableMapping() + ".updateOrd", map);
}

2.5、mapper.xml

<update id="updateOrd" parameterMap="paraMap">
    update mp_article 
    set ord = #{ord},
    update_user = #{update_user},
    update_date = current_timestamp
    where id = #{id}
</update>