点击handsontable单元格获取filter后的数据
handsontable
是因为工作原因需要使用这方面的插件,相对来说
文档
全一点
有个需求需要点击某个单元格弹窗出需要的数据,所以需要知道数据id
//表格中的点击
eventClick(el, rowArr) {
//点击的是表头
if (rowArr.row < 0) {
return;
//被筛选过后的数组
let trimmedArr = this.trimmedRows();
//是否启用了排序
let isSort = this.hot.getPlugin("columnSorting").isSorted();
if (trimmedArr.length && isSort) {
let sortArr = this.myHotArr.getPlugin("columnSorting").rowsMapper
.__arrayMap;
let infos = this.main[trimmedArr[sortArr[rowArr.row]]];
this.getInfors(infos, { row: sortArr[rowArr.row], col: rowArr.col });
} else if (isSort) {
//排序后的数组
let sortArr = this.hot.getPlugin("columnSorting").rowsMapper.__arrayMap;
let infos = this.main[sortArr[rowArr.row]];
this.getInfors(infos, { row: sortArr[rowArr.row], col: rowArr.col });
} else if (trimmedArr.length) {
let infos = this.main[trimmedArr[rowArr.row]];
this.getInfors(infos, { row: trimmedArr[rowArr.row], col: rowArr.col });
} else {
let infos = this.main[rowArr.row];
this.getInfors(infos, rowArr);
//获取被筛选掉的行号
trimmedRows() {
// var plugin = hot.getPlugin('trimRows').trimmedRows;//获取被筛选掉的行号
var plugin = this.hot.getPlugin("trimRows").trimmedRows;
let dataLength = this.main.length;
let dataArr = new Array();
for (let i = 0; i < dataLength; i++) {
dataArr.push(i);
if (plugin.length <= 0) {
dataArr = undefined;
} else {
dataArr = this.array_diff(dataArr, plugin);
return dataArr || [];
// var DataArray = new Array();
// for (var i = 0; i < plugin.length; i++) {
// // 通过行号获取数据
// DataArray.push(this.hot.getSourceDataAtRow(plugin[i]));