JS 框架 DataTable使用排序后台SQL报错,为报字段不存在

此处楼主的报错的原因是表结构里的信息经过转化变为另外的名称所以报错

后台使用MyBaits和Oracle,其中一个数据库的字段为CREAT_TIME,经过MyBaits转化为creatTime

所以排序是列名写了 createTime,点击排序,SQLExcetpion:该字段不存在

所以使用以下方法可以解决该错误,

修改方法请查看  24-48行

 $('#dataTable').HgDataTable({//dataTable是需要显示的table的对应的id
            order: [[ 2, "desc" ]],    //默认加载就排序的行
            checkbox: false,            //是否显示复选框
            isAjax: true,
            searchFormSelector: 'form.search', //搜索条件表单的选择器,当你指定此设置时,表单中的搜索条件也会作为参数发送到服务器端
            searchBtnSelector: '#search',
            ajax: {
                url: '${ctx}/blackUploadQuery/list'   //获取数据的url,默认是post提交
            },
            bSore:true, //开启排序,如果不循序排序,则可以使用 false
            columnDefs: [
                {
                    orderable: false,//禁用排序
                    targets: [0, 1, 3,4, 5] //指定的列
                }
            ],
            columns: [ //列数据定义
                {
                    data: 'businessDesc'
                },
                {
                    data: 'businessNo'
                },
                {
                /**
                        此处以后台以Oracle和Mybaits举例
                        如果指定此行为需要排序的列,如果点击表格第一上面的标题时候,后台Mybaits SQL语句 会在该查询语句后面增加 ORDER BY createTime
                        此处重点来了,如果表结构上为 CREATE_TIME 经过实体类的转化后变为 createTime,此处这样写会报 createTime 列不存在
                        此处应该做个处理
                        --------------------------------
                        data: 'CREATE_TIME', 
                        "render": function (data, type, full) {
                            if (full.createTime != null) {
                                return moment(full.createTime).format('YYYY-MM-DD HH:mm:ss');
                            } else {
                            return "";
                        }
                    }
                     **/
                    data: 'createTime', 
                    "render": function (data, type, full) {
                        if (data != null) {
                            return moment(data).format('YYYY-MM-DD HH:mm:ss');
                        } else {
                            return "";
                        }
                    }
                },


                {
                    data: 'blackType',
                    "render": function (data, type, full) {
                        if (full.businessType == 'cardBlacklistUpload') {
                           return '卡卡卡卡'
                        } else if (full.businessType == 'obuBlacklistUpload') {
                           return 'OBU'
                        } else {
                            return data;
                        }
                    }
                },

                {
                    data: 'operationStatus',
                    "render": function (data, type, full) {
                        if (data == 1) {
                            return '黑名单';
                        } else {
                            return data;
                        }
                    }
                },

                {
                    orderable: false,
                    data: "msgId",
                    render: function (data, type, full) {
                        var result = '
'; result += '流转详情'; result += '
'; return result; } } ] }); })

遇到这个问题时候,我想了几个解决方法

1:给实体类增加EX_TIME字段,屏蔽其他字段的排序

2:给TB_EXTRANSACTION_MESSAGE表建立视图:

3:不使用DateTable的排序方法,其他方法给改字段排序

 

最后想到了以上的方法,可能是因为菜,才觉得向发现了新大陆,哈哈哈哈哈哈h

我是一个专门生产BUG的工程师

关于DateTable的更多用法可以参考 https://www.cnblogs.com/amoniyibeizi/p/4548111.html

 

 

你可能感兴趣的:(js)