Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ag-grid/ag-grid/llms.txt

Use this file to discover all available pages before exploring further.

Row events are fired in response to row operations such as clicking, editing, dragging, and selection changes.

Overview

Listen to row events using GridOptions callbacks:
const gridOptions = {
  onRowClicked: (event) => {
    console.log('Row clicked:', event.data);
  },
  onRowDoubleClicked: (event) => {
    console.log('Row double-clicked:', event.data);
  }
};

Mouse Events

rowClicked
RowClickedEvent<TData, TContext>
Fired when a row is clicked.Event Properties:
  • node: The row node
  • data: The user provided data for the row
  • rowIndex: The visible row index for the row
  • rowPinned: Either ‘top’, ‘bottom’ or null / undefined (if not set)
  • event: The browser event
  • isEventHandlingSuppressed: true if suppressMouseEventHandling has returned true
onRowClicked: (event) => {
  console.log('Clicked row:', event.data);
  console.log('Row index:', event.rowIndex);
}
rowDoubleClicked
RowDoubleClickedEvent<TData, TContext>
Fired when a row is double-clicked.Event Properties:
  • node: The row node
  • data: The user provided data for the row
  • rowIndex: The visible row index for the row
  • rowPinned: Either ‘top’, ‘bottom’ or null / undefined
  • event: The browser event
  • isEventHandlingSuppressed: true if suppressMouseEventHandling has returned true
onRowDoubleClicked: (event) => {
  console.log('Double-clicked row:', event.data);
  // Open detail view, start editing, etc.
}

Selection Events

rowSelected
RowSelectedEvent<TData, TContext>
Fired when a row is selected or deselected.Event Properties:
  • node: The row node
  • data: The user provided data for the row
  • rowIndex: The visible row index for the row
  • rowPinned: Either ‘top’, ‘bottom’ or null / undefined
  • event: The browser event
  • source: The source that triggered the event
onRowSelected: (event) => {
  if (event.node.isSelected()) {
    console.log('Row selected:', event.data);
  } else {
    console.log('Row deselected:', event.data);
  }
}

Editing Events

rowEditingStarted
RowEditingStartedEvent<TData, TContext>
Fired when row editing starts (only when editType='fullRow').Event Properties:
  • node: The row node
  • data: The user provided data for the row
  • rowIndex: The visible row index for the row
  • rowPinned: Either ‘top’, ‘bottom’ or null / undefined
Module: TextEditorModule / LargeTextEditorModule / NumberEditorModule / DateEditorModule / CheckboxEditorModule / CustomEditorModule / SelectEditorModule / RichSelectModule
onRowEditingStarted: (event) => {
  console.log('Started editing row:', event.rowIndex);
}
rowEditingStopped
RowEditingStoppedEvent<TData, TContext>
Fired when row editing stops (only when editType='fullRow').Event Properties:
  • node: The row node
  • data: The user provided data for the row
  • rowIndex: The visible row index for the row
  • rowPinned: Either ‘top’, ‘bottom’ or null / undefined
Module: TextEditorModule / LargeTextEditorModule / NumberEditorModule / DateEditorModule / CheckboxEditorModule / CustomEditorModule / SelectEditorModule / RichSelectModule
onRowEditingStopped: (event) => {
  console.log('Stopped editing row:', event.rowIndex);
}
rowValueChanged
RowValueChangedEvent<TData, TContext>
Fired when cell value(s) in a row have changed.Event Properties:
  • node: The row node
  • data: The user provided data for the row
  • rowIndex: The visible row index for the row
  • rowPinned: Either ‘top’, ‘bottom’ or null / undefined
onRowValueChanged: (event) => {
  console.log('Row data changed:', event.data);
  // Save changes to server
}

Grouping Events

rowGroupOpened
RowGroupOpenedEvent<TData, TContext>
Fired when a row group is opened or closed.Event Properties:
  • node: The row node
  • data: The user provided data for the row
  • rowIndex: The visible row index for the row
  • expanded: true if the group is expanded
Module: RowGroupingModule
onRowGroupOpened: (event) => {
  const action = event.expanded ? 'opened' : 'closed';
  console.log(`Row group ${action}:`, event.node.key);
}

Drag & Drop Events

rowDragEnter
RowDragEnterEvent<TData, TContext>
Fired when the mouse enters a row during a drag operation.Event Properties:
  • node: The row node getting dragged
  • nodes: The list of nodes being dragged
  • event: The underlying mouse move event
  • vDirection: Direction of the drag (‘up’, ‘down’ or null)
  • overIndex: The row index the mouse is dragging over
  • overNode: The row node the mouse is dragging over
  • y: The vertical pixel location
Module: RowDragModule
onRowDragEnter: (event) => {
  console.log('Drag entered row:', event.overIndex);
}
rowDragMove
RowDragMoveEvent<TData, TContext>
Fired continuously while the mouse moves during a row drag.Event Properties:
  • node: The row node getting dragged
  • nodes: The list of nodes being dragged
  • event: The underlying mouse move event
  • vDirection: Direction of the drag
  • overIndex: The row index the mouse is dragging over
  • overNode: The row node the mouse is dragging over
  • y: The vertical pixel location
Module: RowDragModule
onRowDragMove: (event) => {
  // Update drag indicator, etc.
}
rowDragLeave
RowDragLeaveEvent<TData, TContext>
Fired when the mouse leaves a row during a drag operation.Event Properties:
  • node: The row node getting dragged
  • nodes: The list of nodes being dragged
  • event: The underlying mouse move event
  • vDirection: Direction of the drag
  • overIndex: The row index the mouse is dragging over
Module: RowDragModule
onRowDragLeave: (event) => {
  console.log('Drag left row:', event.overIndex);
}
rowDragEnd
RowDragEndEvent<TData, TContext>
Fired when a row drag operation ends (mouse released).Event Properties:
  • node: The row node getting dragged
  • nodes: The list of nodes being dragged
  • event: The underlying mouse move event
  • vDirection: Direction of the drag
  • overIndex: The row index the mouse is dragging over
  • overNode: The row node the mouse is dragging over
Module: RowDragModule
onRowDragEnd: (event) => {
  console.log('Drag ended. Dropped at:', event.overIndex);
  // Update row order in your data
}
rowDragCancel
RowDragCancelEvent<TData, TContext>
Fired when a row drag operation is cancelled (e.g., by pressing Escape).Event Properties:
  • node: The row node getting dragged
  • nodes: The list of nodes being dragged
  • event: The underlying mouse move event
Module: RowDragModule
onRowDragCancel: (event) => {
  console.log('Drag cancelled');
}

Resize Events

rowResizeStarted
RowResizeStartedEvent<TData, TContext>
Fired when row height resizing starts.Event Properties:
  • node: The row node
  • event: The mouse event
  • rowHeight: The current row height
onRowResizeStarted: (event) => {
  console.log('Resizing row:', event.node.id);
}
rowResizeEnded
RowResizeEndedEvent<TData, TContext>
Fired when row height resizing ends.Event Properties:
  • node: The row node
  • event: The mouse event
  • rowHeight: The new row height
onRowResizeEnded: (event) => {
  console.log('Row resized to:', event.rowHeight);
}

Virtual Row Events

virtualRowRemoved
VirtualRowRemovedEvent<TData, TContext>
Fired when a virtual row is removed from the DOM (due to row virtualisation).Event Properties:
  • node: The row node
  • data: The user provided data for the row
  • rowIndex: The visible row index for the row
onVirtualRowRemoved: (event) => {
  // Cleanup any resources associated with this row
}

Batch Events

batchEditingStarted
BatchEditingStartedEvent<TData, TContext>
Fired when batch editing starts.Event Properties:
  • changes: Array of pending cell value changes (initially empty)
Module: BatchEditModule
onBatchEditingStarted: (event) => {
  console.log('Batch editing started');
}
batchEditingStopped
BatchEditingStoppedEvent<TData, TContext>
Fired when batch editing stops (committed or cancelled).Event Properties:
  • changes: Array of cell value changes made during the batch
Module: BatchEditModule
onBatchEditingStopped: (event) => {
  console.log('Batch editing stopped with', event.changes?.length, 'changes');
}

Grid Events

Grid-level events

Column Events

Column interaction events

GridApi

Programmatic row control