# ColumnReorder
The ColumnReorder extension adds the ability to reorder the columns of a grid
via drag'n'drop operations on column headers. In the case of more complex grid
structures, note that reordering is only supported between columns within the
same subrow or columnset.
**Note:** Be sure to include `dojo/resources/dnd.css` or equivalent custom styles when using this extension.
```js
require([
'dojo/_base/declare',
'dgrid/OnDemandGrid',
'dgrid/extensions/ColumnReorder'
], function (declare, OnDemandGrid, ColumnReorder) {
var grid = new (declare([ OnDemandGrid, ColumnReorder ]))({
columns: {
col1: {
label: 'Column1',
reorderable: false
},
col2: 'Column 2',
col3: 'Column 3'
}
}, 'grid');
// ...
});
```
## Additional Column Definition Properties
The ColumnReorder extension supports the following additional column definition properties.
Property | Description
-------- | -----------
`reorderable` | If explicitly set to `false`, the given column's header node will not be treated as a viable DnD item, preventing it from being reordered. **Note:** this is generally only useful for columns at either end of a structure, since if it is surrounded by neighbors which are reorderable, it will not prevent reordering of the surrounding columns.
## Events
The ColumnReorder extension emits a `dgrid-columnreorder` event whenever the
user triggers a column reorder operation. This event includes the following
properties:
* `grid`: The grid instance in which the reorder operation took place
* `subRow`: The specific subrow in which the reorder operation took place,
reflecting the new order
* `column`: The column definition object representing the column which was
reordered
This event bubbles and is cancelable; if canceled, the column structure prior
to the reorder operation will be preserved.