如何抑制ag-grid中某些列的范围选择

问题描述 投票:0回答:1

ag-grid具有许多属性:enable*。列具有许多属性:suppress*。为该列设置suppress*会禁用该列的网格上某些enable*属性的效果。

例如:

var columnDefs = [
    {field: 'athlete', suppressMovable: true, width: 150, cellClass: 'suppress-movable-col'},
    {field: 'age', lockPosition: true, cellClass: 'locked-col'},
    {field: 'country', width: 150}
];

var gridOptions = {
    suppressDragLeaveHidesColumns: true,
    columnDefs: columnDefs,
    defaultColDef: {
        width: 100
    }
};

在上述示例中,由于suppressMovable:true,“运动员”列不可移动。其他所有列都是可移动的。

我有一个带有enableRangeSelection: true的网格

我想防止第一列包含在范围选择中。但是,不存在称为suppressRangeSelection的列属性。

如何防止用户将第一列包括在范围内?

javascript ag-grid
1个回答
0
投票

似乎ag-grid不允许这种行为,但是我设法使用Range Selection API做到了这一点:

    var gridOptions = {
    columnDefs: columnDefs,
    enableRangeSelection: true,
    rowData: null,
    onRangeSelectionChanged: event => {
        var cellRanges = event.api.getCellRanges();
        if (!cellRanges || cellRanges.length === 0) return;
        var excludeColumn = cellRanges[0].columns.find(
            el => el.getColId() === 'athlete'
        );
        if (!excludeColumn) return;
        var rangeParams = {
            rowStartIndex: cellRanges[0].startRow.rowIndex,
            rowStartPinned: cellRanges[0].startRow.rowPinned,
            rowEndIndex: cellRanges[0].endRow.rowIndex,
            rowEndPinned: cellRanges[0].endRow.rowPinned,
            columns: cellRanges[0].columns
                .map(el => el.getColId())
                .filter(el => el !== 'athlete'),
        };
        event.api.clearRangeSelection();
        event.api.addCellRange(rangeParams);
    },
  };
© www.soinside.com 2019 - 2024. All rights reserved.