当前位置: 代码迷 >> 综合 >> 基于bootstrapTable的若依框架如何获取表格选中行的整行数据?
  详细解决方案

基于bootstrapTable的若依框架如何获取表格选中行的整行数据?

热度:107   发布时间:2023-10-16 10:44:28.0

导语
项目是基于若依框架写的,大部分的底层技术都是bootstrap。

最近在写一个项目的时候遇见一个需求,需要将子页面表格中选中的数据回传给父页面。为了减少网络请求,所以就准备直接使用子父页面传值。于是我查看了一下ruoyi.js源码,发现其中只有获取选中的数据id值的函数,并没有获取整行数据的函数。不过根据现有的函数发现获取整行数据是可以实现的。

第一步 分析源码

以下是获取选中行的指定列的值的代码,可以看见在回传数据的时候,都标明了指定列,所以我们只需要重写一个函数,不标明指定列就可以实现想要的功能了。

selectColumns: function(column) {//获取当前选中的值var rows = $.map($("#" + table.options.id).bootstrapTable('getSelections'), function (row) {return row[column];//传回指定列的值});//如果设置了记住选中数据if ($.common.isNotEmpty(table.options.rememberSelected) && table.options.rememberSelected) {var selectedRows = table.rememberSelecteds[table.options.id];if($.common.isNotEmpty(selectedRows)) {rows = $.map(table.rememberSelecteds[table.options.id], function (row) {return row[column];//回传指定列的值});}}//去重return $.common.uniqueFn(rows);
},

第二步 重写函数 获取选中行的整行数据

 根据现有的函数,改起来也很简单。直接将指定列的部分删除就好,不过值得注意的一点就是去重函数也需要重写

selectRows:function(){//获取当前选中的值let rows = $.map($("#" + table.options.id).bootstrapTable('getSelections'), function (row) {return row;});//如果设置了记住选中数据if ($.common.isNotEmpty(table.options.rememberSelected) && table.options.rememberSelected) {let selectedRows = table.rememberSelecteds[table.options.id];if($.common.isNotEmpty(selectedRows)) {rows = $.map(table.rememberSelecteds[table.options.id], function (row) {return row;});}}//去重return $.common.uniqueFnByRows(rows);
},

 第三步 重写去重函数

 在原有的去重函数下方重写一个新的去重函数就好 

uniqueFnByRows:function(array){var result = [];var hashObj = {};for (var i = 0; i < array.length; i++) {if (!hashObj[array[i].id]) {//参数id为主键,请根据自己的情况进行修改hashObj[array[i].id] = true;result.push(array[i]);}}return result;
},

 

 

 

  相关解决方案