# Events Reference

## Content

This page lists SpreadJS events with a brief description, scope, and whether the event supports cancellation.
For detailed parameters and usage examples, see the API Reference.

>type=note
> **Notes:**
>
> * **Scope** indicates the typical object used for binding. Some events can be bound at the Workbook level depending on usage context.
> * **Cancelable** events expose a cancel property in the event arguments.

## Workbook and Sheet Lifecycle Events

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [ActiveSheetChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#activesheetchanged) | Occurs after the active sheet changes. | Workbook | No |
| [ActiveSheetChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#activesheetchanging) | Occurs before the active sheet changes. | Workbook | Yes |
| [BeforePrint](/spreadjs/api/classes/GC.Spread.Sheets.Events#beforeprint) | Occurs before printing. | Workbook | Yes |
| [PermissionChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#permissionchanged) | Occurs when workbook permissions change. | Workbook | No |
| [SheetChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#sheetchanged) | Occurs after a sheet property changes. | Workbook | No |
| [SheetChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#sheetchanging) | Occurs before a sheet property changes. | Workbook | Yes |
| [SheetMoved](/spreadjs/api/classes/GC.Spread.Sheets.Events#sheetmoved) | Occurs after a sheet is moved. | Workbook | No |
| [SheetMoving](/spreadjs/api/classes/GC.Spread.Sheets.Events#sheetmoving) | Occurs before a sheet is moved. | Workbook | Yes |
| [SheetNameChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#sheetnamechanged) | Occurs after the sheet name changes. | Workbook | No |
| [SheetNameChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#sheetnamechanging) | Occurs before the sheet name changes. | Workbook | Yes |
| [SheetTabClick](/spreadjs/api/classes/GC.Spread.Sheets.Events#sheettabclick) | Occurs when a sheet tab is clicked. | Workbook | No |
| [SheetTabDoubleClick](/spreadjs/api/classes/GC.Spread.Sheets.Events#sheettabdoubleclick) | Occurs when a sheet tab is double-clicked. | Workbook | No |

## Cell Interaction and Selection

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [ButtonClicked](/spreadjs/api/classes/GC.Spread.Sheets.Events#buttonclicked) | Occurs when a button, checkbox, or hyperlink cell is clicked. | Workbook | No |
| [CellChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#cellchanged) | Occurs when a cell property changes and requires repaint. | Worksheet | No |
| [CellClick](/spreadjs/api/classes/GC.Spread.Sheets.Events#cellclick) | Occurs when a cell is clicked. | Worksheet | No |
| [CellDoubleClick](/spreadjs/api/classes/GC.Spread.Sheets.Events#celldoubleclick) | Occurs when a cell is double-clicked. | Worksheet | No |
| [EnterCell](/spreadjs/api/classes/GC.Spread.Sheets.Events#entercell) | Occurs when focus enters a cell. | Worksheet | No |
| [LeaveCell](/spreadjs/api/classes/GC.Spread.Sheets.Events#leavecell) | Occurs when focus leaves a cell. | Worksheet | Yes |
| [LeftColumnChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#leftcolumnchanged) | Occurs when the left column changes. | Worksheet | No |
| [SelectionChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#selectionchanged) | Occurs after selection changes. | Worksheet | No |
| [SelectionChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#selectionchanging) | Occurs while selection is changing. | Worksheet | No |
| [TopRowChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#toprowchanged) | Occurs when the top row changes. | Worksheet | No |

## Editing and Value Events

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [EditChange](/spreadjs/api/classes/GC.Spread.Sheets.Events#editchange) | Occurs while editing text changes. | Worksheet | No |
| [EditEnded](/spreadjs/api/classes/GC.Spread.Sheets.Events#editended) | Occurs after leaving edit mode. | Worksheet | No |
| [EditEnding](/spreadjs/api/classes/GC.Spread.Sheets.Events#editending) | Occurs before leaving edit mode. | Worksheet | Yes |
| [EditorStatusChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#editorstatuschanged) | Occurs when the editor status changes. | Worksheet | No |
| [EditStarting](/spreadjs/api/classes/GC.Spread.Sheets.Events#editstarting) | Occurs before entering edit mode. | Worksheet | Yes |
| [UserFormulaEntered](/spreadjs/api/classes/GC.Spread.Sheets.Events#userformulaentered) | Occurs when a formula is entered. | Worksheet | No |
| [ValidationError](/spreadjs/api/classes/GC.Spread.Sheets.Events#validationerror) | Occurs when a cell value is invalid. | Worksheet | No |
| [ValueChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#valuechanged) | Occurs when a cell value changes. | Worksheet | No |

## Clipboard Events

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [ClipboardChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#clipboardchanged) | Occurs after clipboard data changes. | Workbook | No |
| [ClipboardChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#clipboardchanging) | Occurs before clipboard data is set. | Workbook | Yes |
| [ClipboardPasted](/spreadjs/api/classes/GC.Spread.Sheets.Events#clipboardpasted) | Occurs after paste completes. | Workbook | No |
| [ClipboardPasting](/spreadjs/api/classes/GC.Spread.Sheets.Events#clipboardpasting) | Occurs before paste is applied. | Workbook | Yes |

## Row and Column Events

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [ColumnChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#columnchanged) | Occurs after a column property changes. | Worksheet | No |
| [ColumnChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#columnchanging) | Occurs before a column property changes. | Worksheet | Yes |
| [ColumnWidthChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#columnwidthchanged) | Occurs after column width changes. | Worksheet | No |
| [ColumnWidthChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#columnwidthchanging) | Occurs before column width changes. | Worksheet | Yes |
| [RowChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#rowchanged) | Occurs after a row property changes. | Worksheet | No |
| [RowChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#rowchanging) | Occurs before a row property changes. | Worksheet | Yes |
| [RowHeightChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#rowheightchanged) | Occurs after row height changes. | Worksheet | No |
| [RowHeightChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#rowheightchanging) | Occurs before row height changes. | Worksheet | Yes |

## Range, Filter, and Sort Events

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [OutlineColumnCheckStatusChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#outlinecolumncheckstatuschanged) | Occurs when an outline column check status changes. | Worksheet | No |
| [RangeChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#rangechanged) | Occurs after a range changes. | Worksheet | No |
| [RangeFilterCleared](/spreadjs/api/classes/GC.Spread.Sheets.Events#rangefiltercleared) | Occurs after filter clearing. | Worksheet | No |
| [RangeFilterClearing](/spreadjs/api/classes/GC.Spread.Sheets.Events#rangefilterclearing) | Occurs before filter clearing. | Worksheet | No |
| [RangeFiltered](/spreadjs/api/classes/GC.Spread.Sheets.Events#rangefiltered) | Occurs after automatic filtering. | Worksheet | No |
| [RangeFiltering](/spreadjs/api/classes/GC.Spread.Sheets.Events#rangefiltering) | Occurs before automatic filtering. | Worksheet | No |
| [RangeGroupStateChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#rangegroupstatechanged) | Occurs after outline state changes. | Worksheet | No |
| [RangeGroupStateChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#rangegroupstatechanging) | Occurs before outline state changes. | Worksheet | Yes |
| [RangeSorted](/spreadjs/api/classes/GC.Spread.Sheets.Events#rangesorted) | Occurs after automatic sorting. | Worksheet | No |
| [RangeSorting](/spreadjs/api/classes/GC.Spread.Sheets.Events#rangesorting) | Occurs before automatic sorting. | Worksheet | Yes |

## Drag and Fill Events

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [DragDropBlock](/spreadjs/api/classes/GC.Spread.Sheets.Events#dragdropblock) | Occurs during drag-and-drop of a cell range. | Worksheet | Yes |
| [DragDropBlockCompleted](/spreadjs/api/classes/GC.Spread.Sheets.Events#dragdropblockcompleted) | Occurs after drag-and-drop completes. | Worksheet | No |
| [DragFillBlock](/spreadjs/api/classes/GC.Spread.Sheets.Events#dragfillblock) | Occurs during drag fill. | Worksheet | Yes |
| [DragFillBlockCompleted](/spreadjs/api/classes/GC.Spread.Sheets.Events#dragfillblockcompleted) | Occurs after drag fill completes. | Worksheet | No |
| [DragMerged](/spreadjs/api/classes/GC.Spread.Sheets.Events#dragmerged) | Occurs after drag merge. | Worksheet | No |
| [DragMerging](/spreadjs/api/classes/GC.Spread.Sheets.Events#dragmerging) | Occurs before drag merge. | Worksheet | Yes |

## Table Events

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [TableColumnsChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablecolumnschanged) | Occurs after table columns change. | Workbook | No |
| [TableFilterCleared](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablefiltercleared) | Occurs after clearing table filter. | Worksheet | No |
| [TableFilterClearing](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablefilterclearing) | Occurs before clearing table filter. | Worksheet | No |
| [TableFiltered](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablefiltered) | Occurs after table filtering. | Worksheet | No |
| [TableFiltering](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablefiltering) | Occurs before table filtering. | Worksheet | No |
| [TableResized](/spreadjs/api/classes/GC.Spread.Sheets.Events#tableresized) | Occurs after resizing a table. | Workbook | No |
| [TableResizing](/spreadjs/api/classes/GC.Spread.Sheets.Events#tableresizing) | Occurs before resizing a table. | Workbook | Yes |
| [TableRowsChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablerowschanged) | Occurs after table rows change. | Workbook | No |

## TableSheet Events

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [TableSheetFilterCleared](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablesheetfiltercleared) | Occurs after a TableSheet column filter is cleared. | TableSheet | No |
| [TableSheetFilterClearing](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablesheetfilterclearing) | Occurs before a TableSheet column filter is cleared. | TableSheet | Yes |
| [TableSheetFiltered](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablesheetfiltered) | Occurs after a TableSheet column is filtered. | TableSheet | No |
| [TableSheetFiltering](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablesheetfiltering) | Occurs before a TableSheet column is filtered. | TableSheet | Yes |
| [TableSheetSortCleared](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablesheetsortcleared) | Occurs after a TableSheet column sort is cleared. | TableSheet | No |
| [TableSheetSortClearing](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablesheetsortclearing) | Occurs before a TableSheet column sort is cleared. | TableSheet | Yes |
| [TableSheetSorted](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablesheetsorted) | Occurs after a TableSheet column is sorted. | TableSheet | No |
| [TableSheetSorting](/spreadjs/api/classes/GC.Spread.Sheets.Events#tablesheetsorting) | Occurs before a TableSheet column is sorted. | TableSheet | Yes |

## What-If Analysis Events

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [ScenarioChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#scenariochanged) | Occurs after a scenario is created, updated, removed, applied, restored, activated, or deactivated. | Workbook | No |
| [ScenarioChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#scenariochanging) | Occurs before a scenario is created, updated, removed, applied, restored, activated, or deactivated. | Workbook | Yes |

## Shapes, Objects, and Comments

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [CommentChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#commentchanged) | Occurs when a comment changes. | Worksheet | No |
| [CommentRemoved](/spreadjs/api/classes/GC.Spread.Sheets.Events#commentremoved) | Occurs after a comment is removed. | Worksheet | No |
| [CommentRemoving](/spreadjs/api/classes/GC.Spread.Sheets.Events#commentremoving) | Occurs before a comment is removed. | Worksheet | Yes |
| [FloatingObjectChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#floatingobjectchanged) | Occurs when a floating object changes. | Worksheet | No |
| [FloatingObjectLoaded](/spreadjs/api/classes/GC.Spread.Sheets.Events#floatingobjectloaded) | Occurs when a custom floating object’s content is loaded. | Worksheet | No |
| [FloatingObjectRemoved](/spreadjs/api/classes/GC.Spread.Sheets.Events#floatingobjectremoved) | Occurs after a floating object is removed. | Worksheet | No |
| [FloatingObjectRemoving](/spreadjs/api/classes/GC.Spread.Sheets.Events#floatingobjectremoving) | Occurs before a floating object is removed. | Worksheet | Yes |
| [FloatingObjectSelectionChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#floatingobjectselectionchanged) | Occurs when floating object selection changes. | Worksheet | No |
| [PictureChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#picturechanged) | Occurs when a picture changes. | Worksheet | No |
| [PictureSelectionChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#pictureselectionchanged) | Occurs when picture selection changes. | Worksheet | No |
| [ShapeChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#shapechanged) | Occurs when a shape property changes. | Worksheet | No |
| [ShapeRemoved](/spreadjs/api/classes/GC.Spread.Sheets.Events#shaperemoved) | Occurs after a shape is removed. | Worksheet | No |
| [ShapeRemoving](/spreadjs/api/classes/GC.Spread.Sheets.Events#shaperemoving) | Occurs before a shape is removed. | Worksheet | Yes |
| [ShapeSelectionChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#shapeselectionchanged) | Occurs when shape selection changes. | Worksheet | No |
| [ThreadedCommentChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#threadedcommentchanged) | Occurs after a threaded comment changes. | Worksheet | No |
| [ThreadedCommentChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#threadedcommentchanging) | Occurs before a threaded comment changes. | Worksheet | Yes |

## Advanced and System Events

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [CalculationProgress](/spreadjs/api/classes/GC.Spread.Sheets.Events#calculationprogress) | Occurs during incremental calculation. | Workbook | No |
| [DataFetchCompleted](/spreadjs/api/classes/GC.Spread.Sheets.Events#datafetchcompleted) | Occurs when data manager tables finish loading. | Workbook | No |
| [InvalidOperation](/spreadjs/api/classes/GC.Spread.Sheets.Events#invalidoperation) | Occurs when an invalid operation is performed. | Worksheet | No |
| [PivotTableChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#pivottablechanged) | Occurs after PivotTable changes. | Worksheet | No |
| [PivotTableChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#pivottablechanging) | Occurs before a PivotTable field changes. | Worksheet | Yes |
| [SlicerChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#slicerchanged) | Occurs when a slicer changes. | Worksheet | No |
| [SparklineChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#sparklinechanged) | Occurs when a sparkline changes. | Worksheet | No |
| [TouchToolStripOpening](/spreadjs/api/classes/GC.Spread.Sheets.Events#touchtoolstripopening) | Occurs before the touch toolbar opens. | Worksheet | No |
| [UserMentioned](/spreadjs/api/classes/GC.Spread.Sheets.Events#usermentioned) | Occurs when users are mentioned. | Worksheet | No |
| [ViewZoomed](/spreadjs/api/classes/GC.Spread.Sheets.Events#viewzoomed) | Occurs after zoom changes. | Worksheet | No |
| [ViewZooming](/spreadjs/api/classes/GC.Spread.Sheets.Events#viewzooming) | Occurs before zoom changes. | Worksheet | Yes |

## ReportSheet Events

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [ReportGenerationStageChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#reportgenerationstagechanged) | Occurs when report generation enters or leaves a stage. | ReportSheet | No |
| [ReportSheetDataChanged](/spreadjs/api/classes/GC.Spread.Sheets.Events#reportsheetdatachanged) | Occurs after report sheet data changes. | ReportSheet | No |
| [ReportSheetDataChanging](/spreadjs/api/classes/GC.Spread.Sheets.Events#reportsheetdatachanging) | Occurs before report sheet data changes. | ReportSheet | Yes |
| [ReportSheetRecordsSubmitted](/spreadjs/api/classes/GC.Spread.Sheets.Events#reportsheetrecordssubmitted) | Occurs after submitting changes. | ReportSheet | No |
| [ReportSheetRecordsSubmitting](/spreadjs/api/classes/GC.Spread.Sheets.Events#reportsheetrecordssubmitting) | Occurs before submitting changes. | ReportSheet | Yes |

## Collaboration Events

| Event | Description | Scope | Cancelable |
| ----- | ----------- | ----- | ---------- |
| [CollaborationEndRedo](/spreadjs/api/classes/GC.Spread.Sheets.Events#collaborationendredo) | Occurs after a collaborative redo operation. | Workbook | No |
| [CollaborationEndUndo](/spreadjs/api/classes/GC.Spread.Sheets.Events#collaborationendundo) | Occurs after a collaborative undo operation. | Workbook | No |
| [CollaborationStartRedo](/spreadjs/api/classes/GC.Spread.Sheets.Events#collaborationstartredo) | Occurs before a collaborative redo operation. | Workbook | No |
| [CollaborationStartUndo](/spreadjs/api/classes/GC.Spread.Sheets.Events#collaborationstartundo) | Occurs before a collaborative undo operation. | Workbook | No |
