Column Reordering
Grid columns can be dragged & dropped.
| Date | Name | Continent | Browser | OS | Visits |
|---|---|---|---|---|---|
| 05/04/2026 | Caleb Dietrich | South America | Safari | iOS | 86 |
| 06/11/2026 | Darwin Jerde | Australia | Firefox | Mac OS | 93 |
| 06/24/2026 | Bell Keeling | Antarctica | Opera | Android | 86 |
| 05/15/2026 | Bennie Kiehn | Australia | Opera | Windows | 50 |
| 06/14/2026 | Mariane Marks | Antarctica | Opera | Android | 88 |
| 04/25/2026 | Ivah Howell | Africa | Edge | Mac OS | 29 |
| 04/13/2026 | Aletha Hammes | South America | Opera | Windows | 60 |
| 06/23/2026 | Therese Jacobs | South America | Internet Explorer | Android | 100 |
| 04/23/2026 | Imogene Gibson | North America | Firefox | Ubuntu | 39 |
| 03/26/2026 | Maria Osinski | South America | Firefox | Ubuntu | 96 |
| 06/13/2026 | Jadyn Willms | Australia | Opera | Android | 5 |
| 05/20/2026 | Loyce Kohler | North America | Firefox | Android | 63 |
| 04/30/2026 | Thora Pagac | Antarctica | Firefox | Ubuntu | 93 |
| 06/30/2026 | Ryann McCullough | South America | Chrome | Android | 79 |
| 04/10/2026 | Buck Marvin | Australia | Edge | Windows | 37 |
| 04/11/2026 | Domenic Klein | Africa | Safari | Android | 94 |
| 04/09/2026 | Ally VonRueden | Africa | Opera | Mac OS | 31 |
| 06/28/2026 | Lowell Langosh | Asia | Safari | Mac OS | 34 |
| 04/27/2026 | Romaine Gusikowski | North America | Safari | Android | 69 |
| 06/30/2026 | Stephan Schinner | South America | Opera | Windows | 88 |
| 04/01/2026 | Lenore Altenwerth | Australia | Chrome | Mac OS | 13 |
| 07/03/2026 | Connor Rice | Africa | Edge | Android | 94 |
| 03/31/2026 | Helmer Kovacek | South America | Chrome | iOS | 59 |
| 03/27/2026 | Chelsey Becker | South America | Firefox | Windows | 74 |
| 04/26/2026 | Earlene Dach | Asia | Opera | Android | 26 |
| 06/22/2026 | Freddy Bauch | Africa | Internet Explorer | iOS | 90 |
| 04/09/2026 | Jacey Klein | South America | Internet Explorer | Mac OS | 85 |
| 05/05/2026 | Margret Rodriguez | North America | Internet Explorer | Ubuntu | 21 |
| 07/02/2026 | Sabina Leffler | South America | Firefox | Android | 38 |
| 05/07/2026 | Hobart Hane | North America | Safari | Windows | 94 |
| 06/29/2026 | Arely Emard | Australia | Internet Explorer | Android | 90 |
| 05/31/2026 | Kristin Erdman | South America | Internet Explorer | Android | 38 |
| 05/09/2026 | Vallie Champlin | Africa | Safari | Ubuntu | 2 |
| 06/18/2026 | Wallace Barton | North America | Firefox | Android | 87 |
| 06/16/2026 | Keira Boyle | Antarctica | Internet Explorer | Mac OS | 81 |
| 04/27/2026 | Amaya Reilly | South America | Chrome | Android | 8 |
| 06/29/2026 | Elmira Jacobs | South America | Safari | Android | 45 |
| 04/13/2026 | Aditya McCullough | Europe | Safari | Mac OS | 92 |
| 06/25/2026 | Cloyd Purdy | North America | Edge | Android | 47 |
| 05/24/2026 | Destini Turcotte | North America | Opera | Android | 77 |
| 04/06/2026 | Joey Moore | Asia | Safari | Ubuntu | 6 |
| 05/27/2026 | Allene Braun | Africa | Firefox | Windows | 11 |
| 04/28/2026 | Julio Mueller | South America | Safari | Android | 43 |
| 04/26/2026 | Adolphus Denesik | Australia | Firefox | Windows | 16 |
| 05/08/2026 | Clarabelle Hermiston | Africa | Edge | Android | 72 |
| 04/30/2026 | Greg Rowe | Antarctica | Opera | Ubuntu | 99 |
| 06/20/2026 | Roberto Emmerich | North America | Opera | Android | 61 |
| 04/10/2026 | Lonie Cummerata | Asia | Firefox | Mac OS | 56 |
| 06/02/2026 | Citlalli Feest | North America | Firefox | Mac OS | 27 |
| 04/20/2026 | Isaac VonRueden | South America | Safari | Mac OS | 71 |
| 04/10/2026 | Lane Heathcote | North America | Safari | Ubuntu | 41 |
| 04/29/2026 | Kitty Shields | Antarctica | Firefox | Ubuntu | 28 |
| 03/31/2026 | Adrien Donnelly | Africa | Safari | Ubuntu | 5 |
| 05/21/2026 | Horacio Bauch | South America | Edge | Mac OS | 21 |
| 06/26/2026 | Kurtis Gerlach | Australia | Firefox | Windows | 44 |
| 04/01/2026 | Kelly Torp | South America | Chrome | Android | 23 |
| 05/31/2026 | Heath Roob | North America | Firefox | Android | 46 |
| 04/29/2026 | Americo Bashirian | Asia | Internet Explorer | Mac OS | 82 |
| 06/10/2026 | Noah Schaden | Antarctica | Internet Explorer | Mac OS | 26 |
| 03/28/2026 | Jabari Franecki | North America | Safari | Android | 94 |
| 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)); }} />