LigerUI LigerGrid getSelectedRows() 多选顺序 不是从上到下修改方法
1、问题
LigreGrid内部是选中一个,往selected里塞一个,
当执行getSelectedRows() 的时候,会把selected以选中的顺序,返回出来,所以是按照选择顺序返回。
原生代码片段:
人性化的方式应该是按照选中列的从上到下输出
2、解决
利用console.log将getSelectedRows()的object打印出来,可以得到这个数组每一个Object有一个__index的参数,并且是按照从上到下的顺序从小到大的数字属性。所以可以以这个属性来进行二次排序,以实现从上到下顺序。考虑到每页的数据量不大,当前是最多一页50个,所以排序算法的效率几乎没有变化,采用最简单的冒泡排序即可。
增加一个带参数的getSelectedRows方法,传参数即可实现排序。
getSelectedRows: function (sorted) { var arr = []; for (var i in this.selected) { var o = this.selected[i]; if (o['__id'] in this.records) arr.push(o); } if(sorted!=null) { console.log("内部排序"); var len = arr.length; for (var i = 0; i < len; i++) { for (var j = 0; j < len - 1 - i; j++) { // 相邻元素两两对比,将大的换到后面 实现从小到大 if (arr[j].__index > arr[j+1].__index) { // 元素交换 var temp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = temp; } } } } return arr; },