如何判断列调整大小是手动完成还是使用onColumnResized()自动完成?

时间:2017-07-26 17:59:12

标签: javascript ag-grid

在ag-grid v11.0之前,sizeColumnsToFit()使用未传递参数'finished = true'的事件触发。当用户手动调整列的大小时,一旦调整大小拖动完成,事件将传递'finished = true'。这使我能够区分手动和自动列调整大小。

从ag-grid v11.0开始,sizeColumnsToFit()现在触发参数'finished = true'的事件。有没有办法区分这种自动调整大小和手动用户调整大小?

3 个答案:

答案 0 :(得分:4)

从中派生ColumnResizedEvent的ColumnEvent具有“源”属性,当您双击分区时,该属性读取“ sizeColumnsToFit”或“ uiColumnDragged”甚至“ autosizeColumns”。

https://www.ag-grid.com/javascript-grid-events/#properties-and-hierarchy

您应该能够使用源来确定事件的触​​发方式。

myEventHandler(ev: ColumnResizedEvent) {
  if (ev.source === 'sizeColumnsToFit') {
    do.this;
  } else {
    do.that;
  }
}

答案 1 :(得分:0)

自10以来添加的代码

colsToFireEventFor.forEach( (column: Column) => {
            let event: ColumnResizedEvent = {
                type: Events.EVENT_COLUMN_RESIZED,
                column: column,
                columns: [column],
                finished: true,
                api: this.gridApi,
                columnApi: this.columnApi
            };
            this.eventService.dispatchEvent(event);
        });

您可以尝试修改注释完成:true属性或只使用版本10.0,其中此func如下所示:

 colsToFireEventFor.forEach( (column: Column) => {
            let event = new ColumnChangeEvent(Events.EVENT_COLUMN_RESIZED).withColumn(column);
            this.eventService.dispatchEvent(Events.EVENT_COLUMN_RESIZED, event);
        });

答案 2 :(得分:0)

手动拖动列时,源始终为“uiColumnDragged”

 if (event.source === 'uiColumnDragged') { 
               // your logic here
 }