You can also enable row reordering, by specifying onRowReorder.
When the grid is sorted, filtered, grouped or pivoted, the row reordering does not work, as it would be confusing.
When the dataSource is an array or a promise, if the grid is configured with row reordering, if no onRowReorder is specified, the rows will be reordered internally in the dataSource.
As already mentioned, for custom reordering logic, or reordering with a remote data source, you need to implement onRowReorder({ data, dragRowIndex, insertRowIndex }) - see the example below to help you get started.
The example above uses renderRowReorderProxy to customize the drag proxy on reordering.