首页 > 解决方案 > 在 ag-grid 中使用 getAllColumns 属性时如何排除列

问题描述

我有一个函数可以计算和隐藏不适合屏幕的列数。我想在调整列大小和隐藏列时排除列。这就是我所拥有的。

let ctrOfColumns = this.gridOptionsValue.columnApi.getAllColumns();

这将返回我拥有的列。我想排除一个 colId 为“toBeExcludedId”的特定列,这样它就不会被包含在列算法的隐藏中。

这是我隐藏列的算法

let gridWidthOfMyTable = $('#idOfMyGrid').outerWidth();
let columnsToBeShown = [];
let columnsToBeHidden = [];
let totalWidthOfColumn = 0;

for(let x = 0 ; x < ctrOfColumns.length; x ++){
 const singleColumn = ctrOfColumns[x];
        totalWidthOfColumn += singleColumn.getMinWidth();
        if (totalWidthOfColumn > gridWidthOfMyTable) {
            columnsToBeHidden.push(singleColumn);
        } else {
            columnsToBeShown.push(singleColumn);
        }
}
this.gridOptionsValue.columnApi.setColumnsVisible(columnsToBeShown, true);
this.gridOptionsValue.columnApi.setColumnsVisible(columnsToBeHidden, false);

标签: ag-grid

解决方案


无需遍历数组中的所有值。您可以使用链接并将过滤器直接应用于 getAllColumns(),如下所示:

let ctrOfColumns = this.gridOptionsValue
 .columnApi
 .getAllColumns()
 .filter((column) => column.colId !== 'toBeExcludedId');

推荐阅读