Angular Data GridFill HandleEnterprise
When working with a Range Selection, a Fill Handle allows you to run operations on cells as you adjust the size of the range.
To enable the Fill Handle, simply set enableFillHandle
to true
in the gridOptions
as shown below:
<ag-grid-angular
[columnDefs]="columnDefs"
[enableRangeSelection]="enableRangeSelection"
[enableFillHandle]="enableFillHandle"
/* other grid options ... */>
</ag-grid-angular>
this.columnDefs = [
{ field: 'country' },
{ field: 'year' },
{ field: 'sport' },
{ field: 'total' }
];
this.enableRangeSelection = true;
this.enableFillHandle = true;
It's important to note that if you enable both enableFillHandle
and enableRangeHandle
, the Fill Handle will take precedence.
The default Fill Handle behaviour will be as close as possible to other spreadsheet applications. Note the following:
- When a single cell is selected and the range is increased, the value of that cell will be copied to the cells added to the range.
- When a single cell containing a number value is selected and the range is increased while pressing the Alt/Option key, that value will be incremented (or decremented if dragging to the left or up) by the value of one until all new cells have been filled.
- When a range of numbers is selected and that range is extended, the Grid will detect the linear progression of the selected items and fill the extra cells with calculated values.
- When a range of strings or a mix of strings and numbers are selected and that range is extended, the range items will be copied in order until all new cells have been properly filled.
- When a range of numbers is selected and the range is increased while pressing the Alt/Option key, the behaviour will be the same as when a range of strings or mixed values is selected.
- When reducing the size of the range, cells that are no longer part of the range will be cleared (set to
null
).
Reducing a range selection with the Fill Handle will clear cell contents by default, as can be observed in the Range Reduction example above.
If this behaviour for decreasing selection needs to be prevented, the flag suppressClearOnFillReduction
should be set to true
.
By the default, the Fill Handle can be dragged horizontally or vertically. If dragging only vertically, or only horizontally is a requirement, the gridOptions
property fillHandleDirection
property can be set or set via the API using setFillHandleDirection
. This default value is xy
.
| Set to 'x' to force the fill handle direction to horizontal, or set to 'y' to force the fill handle direction to vertical.Default: xy |
| Sets the preferred direction for the selection fill handle.
|
<ag-grid-angular
[columnDefs]="columnDefs"
[enableRangeSelection]="enableRangeSelection"
[enableFillHandle]="enableFillHandle"
[fillHandleDirection]="fillHandleDirection"
/* other grid options ... */>
</ag-grid-angular>
this.columnDefs = [
{ field: 'country' },
{ field: 'year' },
{ field: 'sport' },
{ field: 'total' }
];
this.enableRangeSelection = true;
this.enableFillHandle = true;
this.fillHandleDirection = 'x';
Often there is a need to use a custom method to fill values instead of simply copying values or increasing number values using linear progression. In these scenarios, the fillOperation
callback should be used.
| Callback to fill values instead of simply copying values or increasing number values using linear progression.
|
<ag-grid-angular
[columnDefs]="columnDefs"
[enableRangeSelection]="enableRangeSelection"
[enableFillHandle]="enableFillHandle"
[fillOperation]="fillOperation"
/* other grid options ... */>
</ag-grid-angular>
this.columnDefs = [
{ field: 'country' },
{ field: 'year' },
{ field: 'sport' },
{ field: 'total' }
];
this.enableRangeSelection = true;
this.enableFillHandle = true;
this.fillOperation = (fillOperationParams) => {
return 'Foo';
};
Properties available on the FillOperationParams<TData = any, TContext = any>
interface.
If a fillOperation
callback is provided, the fill handle will always run it. If the current values are not relevant to the fillOperation
function that was provided, false
should be returned to allow the grid to process the values as it normally would.
The example below will use the custom fillOperation
for the Day of the week column, but it will use the default operation for any other column.
The example below will use the custom fillOperation
to prevent values in the Country column from being altered by the Fill Handle.
When the fillOperation
function returns params.currentCellValue
that value is not added to the params.values
list. This allows users to skip any cells in the Fill Handle operation.
Non editable cells will not be changed by the Fill Handle, so there is no need to add custom logic to skip columns that aren't editable.
When the grid is in Read Only Edit mode the Fill Handle
will not update the data inside the grid. Instead the grid fires cellEditRequest
events allowing the application to process the update request.
| Value has changed after editing. Only fires when readOnlyEdit=true .
|
The example below will show how to update cell value combining the Fill Handle
with readOnlyEdit=true
.
The Fill Handle can be disabled on a per column basis by setting the column definition property suppressFillHandle
to true .
In the example below, please note that the Fill Handle is disabled in the Country and Date columns.