bootstrap-table 前端排序以及后端排序

前端排序

1. 列参数设置:

传入sorter参数,增加自定义排序功能

columns:[{
   title: '编号',
   field: 'no',
   align:'center',
   width:120,
   sortable:true,
   sorter:'sortStr'
},....
]

2. 自定义排序方法

//字符串排序,包括中文,按首字母A-Z顺序排序
sortStr=  function(a, b) {
        var a = a?a:-1, b = b?b:-1
        return a.localeCompare(b)
},
//按日期排序
sortDate=  function(a, b) {
        var a = a?a:-1, b = b?b:-1
        return Date.parse(a) - Date.parse(b)
},
//按数字大小排序
sortNum=  function(a, b) {
        var a = a?a:-1, b = b?b:-1
        return a-b
},

3. 前端排序注意点

  • 一定要填写field参数,即使使用了formatter显示字段值,也必须保留field参数

    formatter: function(val, list, i) { return val; }

  • sorter参数一定是方法名字符串,否则无法获取到排序参数

  • 如果主参数使用了后端分页参数sidePagination=server,则无法使用前端自动排序

4. 其他方法,可在table option中增加customSort<function>参数

参考:https://live.bootstrap-table.com/example/options/custom-sort.html

  function customSortFun(sortName, sortOrder, data) {
    var order = sortOrder === 'desc' ? -1 : 1
    data.sort(function (a, b) {
      var aa = +((a[sortName] + '').replace(/[^\d]/g, ''))
      var bb = +((b[sortName] + '').replace(/[^\d]/g, ''))
      if (aa < bb) {
        return order * -1
      }
      if (aa > bb) {
        return order
      }
      return 0
    })
  }

后端排序

在做了后端分页("sidePagination": "server",)的情况下,无法进行前端排序。

可以使用bootstrap的onSort(sort.bs.table)事件,获取点击排序事件,传入后端接口排序参数即可。

 

以下是一个后端排序,分页的完整参数示例

var option = {
    "url": "url",
    "method": "post",
    "height": "100",
    "paginationLoop": false,
    "contentType": "application/json; charset=utf-8",
    "dataType": "json",
    "paginationVAlign": "bottom",
    "pagination": true,
    "sidePagination": "server",
    "ajaxOptions": {
        "xhrFields": {
            "withCredentials": true
        }
    },
    "uniqueId": "object_id",
    "classes": "table table-hover",
    "dataField": "data",
    "totalField": "count",
    "columns": [
        {
            "title": "序号",
            "align": "center",
            "width": 50
        },
        {
            "title": "名称",
            "field": "unitName",
            "align": "center",
            "sortable": true,
            "sorter": "sortStr"
        }
    ],
    "pageSize": 10,
    "pageList": [
        10,
        20,
        30,
        40,
        50
    ],
    onLoadSuccess:function(){},
    queryParams:'queryParams'
}

params= {
    id: 1
}

function queryParams(){
    return params
    //return JSON.stringify(params);
}


$('#table1').bootstrapTable(option );

//后端排序, 点击排序后,会自动赋值参数查询,并刷新表格
$('#table1').on('sort.bs.table',function(e, name, order){//点击排序
        params.orderField = name
        params.order = order
});

 

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Bootstrap-Table中,可以使用sortName和sortOrder属性来实现表格的排序功能。当sortName属性设置为"sort",sortOrder属性设置为"desc"时,会生成一个order by子句,按照sort字段降序排列。例如,当使用以下代码初始化表格时: ``` $(function() { var options = { url: prefix + "/list", sortName: "sort", sortOrder: "desc", }; $.table.init(options); }); ``` 生成的sql语句为: ``` SELECT * FROM xxx order by sort desc LIMIT ? ``` 如果需要多个字段排序,可以在sortName属性中使用逗号分隔多个字段,并在sortOrder属性中留空。例如: ``` $(function() { var options = { url: prefix + "/list", sortName: "sort desc,id asc", sortOrder: "", }; $.table.init(options); }); ``` 生成的sql语句为: ``` SELECT * FROM xxx order by sort desc,id asc LIMIT ? ``` 需要注意的是,sortName属性中的字段名会被转换为下划线命名格式(驼峰命名转下划线),例如orderNum会被转换为order_num。所以在sortName属性中应该使用转换后的字段名。参考\[2\] #### 引用[.reference_title] - *1* *2* *3* [【若依(ruoyi)】Bootstrap-Table表格排序](https://blog.csdn.net/sayyy/article/details/122616970)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值