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 = '<div data-businessNo="' + full.businessNo + '"  data-msgId="' + data + '" data-type="' + full.businessType + '">';
                        result += '<a href="javascript:void(0);" class="viewMsgExchange">流转详情</a>';
                        result += '</div>';
                        return result;
                    }
                }
            ]
        });
    })

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

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

2:给TB_EXTRANSACTION_MESSAGE表建立视图:

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

 

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

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

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值