Ag-Grid:将一列的位置锁定到最后一列

时间:2019-07-13 08:09:06

标签: ag-grid

我想知道是否有一种方法可以有效地锁定Ag-Grid中的列,以便无论如何该列始终是最后一列。

背景

我最终要寻找的是,如果网格尺寸比所有列宽的总和还要宽,则要避免在最后一列后留空白。这是为了使网格具有一致的专业外观,特别是考虑到偶数/奇数行通常以不同的颜色呈现时。我希望空白区域还具有交替的背景色。

鉴于似乎没有任何网格属性可以强制网格在最后将空白呈现为伪列,因此,我考虑以以下方式手动添加伪列:

  • 伪列没有标题
  • 伪列没有数据
  • 伪列不可排序(通过sortable: false 实现)
  • 伪列不能手动调整大小(通过resizable: false 实现
  • 伪列是仅 列,其中包含suppressSizeToFit: false
  • 将伪列锁定为总是最后一列,以使用户无法将列拖到它的右侧

除了上面列表中的最后一项,我已经找到了一种实现所有目标的方法。我知道我可以suppressMovable: true,但是这只能确保该列本身不可拖动,并且不会阻止用户将其拖动到其右侧。

有效地,我正在寻找类似于lockPosition的东西,但我不想将列锁定在最前面,而是想将列锁定在最末端。

3 个答案:

答案 0 :(得分:1)

关注ag-grid待办事项https://www.ag-grid.com/ag-grid-pipeline/中当前打开的AG-3326问题

“允许锁定(lockPosition)一列始终为第一列或最后一列(当前仅支持第一列)”

答案 1 :(得分:0)

  

我最终要寻找的是如果网格尺寸比所有列宽的总和还要宽,则要避免在最后一列后留空白

您可以对列使用sizeColumnsToFit() API,以调整大小以适合水平网格。使用此API,最后一列之后将不会有任何空格,但是请确保您未指定至少一列的宽度。这是将扩展/缩小以适合网格大小的列。

sizeColumnsToFit()事件触发后调用gridReady

答案 2 :(得分:0)

在实施AG-3326之前,这是锁定最右边列的有效解决方法。

onColumnMoved: params => {
  const columnCount = params.columnApi.getAllColumns().filter(c => c.isVisible()).length;
  const maxIndex = columnCount - 2;
  if(params.toIndex > maxIndex) {
    params.columnApi.moveColumnByIndex(params.toIndex, maxIndex); 
  }
}

任何移至“锁定”列右侧的列都将立即移至“锁定”列左侧。