Column Reordering
Grid columns can be dragged & dropped.
| Date | Name | Continent | Browser | OS | Visits |
|---|---|---|---|---|---|
| 08/08/2026 | Torrance Wisozk | Africa | Internet Explorer | Windows | 16 |
| 08/17/2026 | Demarco Strosin | North America | Opera | Windows | 92 |
| 06/28/2026 | Isidro Conroy | Australia | Firefox | Mac OS | 93 |
| 09/01/2026 | Lonzo Reynolds | Australia | Safari | Windows | 87 |
| 08/20/2026 | Hilbert Wilderman | Australia | Internet Explorer | Android | 5 |
| 07/21/2026 | Rylan Effertz | Europe | Safari | Ubuntu | 73 |
| 08/20/2026 | Gerald Grady | Africa | Edge | Windows | 28 |
| 08/15/2026 | Bria Pollich | South America | Internet Explorer | Ubuntu | 19 |
| 08/16/2026 | Rosie Mills | South America | Opera | Mac OS | 92 |
| 07/12/2026 | Violet Rohan | Europe | Safari | Ubuntu | 20 |
| 08/06/2026 | Ana Kerluke | North America | Firefox | Android | 15 |
| 08/17/2026 | Torrey Miller | Asia | Internet Explorer | Ubuntu | 9 |
| 07/27/2026 | Pete Dach | North America | Internet Explorer | Mac OS | 93 |
| 07/21/2026 | Julianne Boyle | South America | Opera | Mac OS | 65 |
| 08/25/2026 | Jocelyn Gutkowski | Antarctica | Firefox | Android | 64 |
| 08/23/2026 | Arianna Rodriguez | Asia | Safari | Ubuntu | 84 |
| 07/20/2026 | Frankie Hermann | North America | Opera | Android | 22 |
| 08/30/2026 | Vickie Strosin | North America | Internet Explorer | Windows | 14 |
| 09/17/2026 | Amos Renner | Africa | Firefox | Ubuntu | 89 |
| 09/22/2026 | Troy Donnelly | Africa | Firefox | Windows | 11 |
| 09/27/2026 | Clotilde Lindgren | Antarctica | Internet Explorer | Windows | 90 |
| 07/17/2026 | Paul Nikolaus | Australia | Internet Explorer | Android | 43 |
| 07/20/2026 | Kay Robel | Europe | Opera | Windows | 26 |
| 08/28/2026 | Jamie Kozey | Australia | Firefox | Windows | 51 |
| 09/06/2026 | Ayla Beier | North America | Opera | iOS | 40 |
| 09/07/2026 | Hillary Crooks | Africa | Edge | Mac OS | 74 |
| 08/30/2026 | Arnoldo Schroeder | North America | Opera | iOS | 97 |
| 07/03/2026 | Enoch Zboncak | Africa | Safari | Mac OS | 62 |
| 07/30/2026 | Deangelo Mueller | North America | Internet Explorer | Android | 100 |
| 08/07/2026 | Lula Sauer | Africa | Edge | Android | 68 |
| 07/26/2026 | Jessy Schmitt | Africa | Chrome | Mac OS | 30 |
| 09/06/2026 | Wilburn Bins | North America | Firefox | Windows | 74 |
| 09/02/2026 | Robbie Franecki | Australia | Firefox | iOS | 22 |
| 09/26/2026 | Rubye Walsh | Asia | Edge | Windows | 75 |
| 06/29/2026 | Esperanza Morissette | Asia | Firefox | Ubuntu | 27 |
| 09/20/2026 | Albina Reilly | Australia | Opera | Mac OS | 89 |
| 08/11/2026 | Breanne Effertz | Asia | Firefox | Ubuntu | 77 |
| 07/03/2026 | Kenny Bernier | Australia | Firefox | iOS | 32 |
| 08/11/2026 | Elenor Hayes | Antarctica | Edge | Ubuntu | 43 |
| 07/07/2026 | Marcelino Boyer | Australia | Firefox | Mac OS | 98 |
| 08/25/2026 | Idella Kreiger | Asia | Internet Explorer | Android | 54 |
| 06/28/2026 | Gudrun Collins | Europe | Safari | Ubuntu | 3 |
| 08/17/2026 | Serenity Jacobi | Asia | Opera | Mac OS | 79 |
| 07/26/2026 | Milford Morissette | Australia | Internet Explorer | Windows | 97 |
| 07/06/2026 | Gabriel Schaden | North America | Edge | Android | 73 |
| 09/12/2026 | Bella Aufderhar | Africa | Safari | Mac OS | 35 |
| 07/09/2026 | Celia Bernhard | South America | Safari | Mac OS | 45 |
| 07/25/2026 | Andres Hickle | Australia | Opera | Mac OS | 13 |
| 09/11/2026 | Cleve Toy | Africa | Firefox | Ubuntu | 64 |
| 08/27/2026 | Aileen Jacobi | North America | Opera | Android | 20 |
| 07/14/2026 | General Hirthe | North America | Chrome | Ubuntu | 21 |
| 08/16/2026 | Keon Stokes | Australia | Internet Explorer | Mac OS | 98 |
| 09/06/2026 | Emmy Lueilwitz | North America | Opera | iOS | 33 |
| 09/24/2026 | Jayme Turcotte | Australia | Safari | Ubuntu | 24 |
| 07/07/2026 | Brad Tillman | Australia | Firefox | Ubuntu | 11 |
| 08/14/2026 | Cassandre Lubowitz | South America | Edge | Android | 52 |
| 08/08/2026 | Rodrick Carroll | Africa | Firefox | Windows | 83 |
| 09/19/2026 | Orlo Cruickshank | Asia | Internet Explorer | iOS | 63 |
| 08/07/2026 | Oscar Rau | Europe | Edge | Android | 35 |
| 09/10/2026 | Marilie Wisoky | Australia | Opera | Ubuntu | 99 |
| Date | Name | Continent | Browser | OS | Visits |
|---|
To allow dragging grid column around, set draggable to true on each column.
There are two parts required to implement column reordering. The first part is dynamic column generation. The onGetColumns callback method
is invoked whenever columnParams change (in this example it's bound to $page.columnOrder) and it should return
the list of columns to be displayed. The list should be in the same format as when assigned to the columns property.
It's important to set a unique key for each column so that grid can correctly associate column meta data (such as column width)
and restore it on each configuration change.
The other part is implementing column drag & drop using onColumnDropTest and onColumnDrop callbacks.
The onColumnDropTest checks if the dragged object contains information required to make a successful column drop.
The logic for changing columns is implemented in onColumnDrop. In this example, columnOrder
and unusedColumns are modified and after that the grid automatically reflects the updated configuration.
<Grid records-bind="$page.records" mod="fixed-layout" scrollable buffered style="height: 500px;" lockColumnWidths columnParams-bind="$page.columnOrder" onGetColumns={(columnOrder) => columnOrder.map((key) => allColumns.find((c) => c.key == key))} onColumnDropTest={(e, instance) => (e.source.type == "grid-column" && e.source.gridInstance == instance) || e.source?.data.type == "unused-column" } onColumnDrop={(e, { store }) => { let key = e.source.type == "grid-column" ? e.source.column.key : e.source.data.key; let { index } = e.target; let columnOrder = store.get("$page.columnOrder"); let at = columnOrder.indexOf(key); let result = columnOrder.filter((c) => c != key); if (at >= 0 && at < index) index--; result = insertElement(result, index, key); store.set("$page.columnOrder", result); store.update("$page.unusedColumns", (unused) => unused.filter((c) => c != key)); }} />