experiment_id: web-retrieval-v1
fixture_id: /demos/web-component-grid-drag-and-reorder-columns
mode: provenance
representation: html
origin_response_id: 514983c79284c93d2dff5569af1fdeb2
version: 2026-10-21
version_created_at_utc: 2026-10-21T20:42:35.566Z
version_nonce: 2b7d4a20164843b01aafbcee2ac1a13a
generated_at_utc: 2026-10-22T20:40:20.415Z
response_nonce: 4040c859eb90386da71e76473c7bf69d

Drag to Reorder Columns

65 of 125
Users can drag columns to different positions to alter the display order.
Result Full HTML CSS JS
Edit Download
[[record.breed]] - [[record.name]]

Full Code

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>ZingGrid: Blank Grid</title>
  <script nonce="undefined" src="https://cdn.zinggrid.com/zinggrid.min.js"></script>
  <style>
    .zg-body {
      background: #e6e6e6;
    }

    zing-grid[loading] {
      height: 519px;
    }
  </style>
</head>

<body class="zg-body">
  <!-- Most features can be toggled on the toplevel zing-grid tag -->
  <zing-grid caption="Drag and reorder columns" columns-control column-drag column-drag-action="reorder" layout="row" layout-controls="disabled" viewport-stop>
    <!-- dataset -->
    <zg-data data='[
      	{ "breed": "Cane Corso", "name": "Ziva"},
      	{ "breed": "Pug", "name": "Doug"},
      	{ "breed": "Corgi", "name": "Jenny"},
      	{ "breed": "Pomeranian", "name": "Koda"},
      	{ "breed": "Great Dane", "name": "Zeus"},
      	{ "breed": "Frenchie", "name": "Bruce"},
      	{ "breed": "Cane Corso", "name": "Sofia"},
      	{ "breed": "Pomeranian", "name": "Snowball"}
      ]'></zg-data>
    <!-- If you don't want to use all columns from dataset, user must define columns here -->
    <zg-colgroup>
      <zg-column index="breed" type="select" type-select-options="Cane Corso, Corgi, Frenchie, Great Dane, Pomeranian, Pug"></zg-column>
      <zg-column index="name" filter="disabled"></zg-column>
      <zg-column index="breed" header="Combined" filter="disabled">
        <div>[[record.breed]] - [[record.name]]</div>
      </zg-column>
    </zg-colgroup>
  </zing-grid>

  <script>
    ZingGrid.setLicense(['26ccbfec16b8be9ee98c7d57bee6e498']);
  </script>
</body>

</html>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>ZingGrid: Blank Grid</title>
    <script src="https://cdn.zinggrid.com/zinggrid.min.js"></script>
  </head>
  <body class="zg-body">
    <!-- Most features can be toggled on the toplevel zing-grid tag -->
    <zing-grid
      caption="Drag and reorder columns"
      columns-control
      column-drag
      column-drag-action="reorder"
      layout="row"
      layout-controls="disabled"
      viewport-stop>
      <!-- dataset -->
      <zg-data data='[
      	{ "breed": "Cane Corso", "name": "Ziva"},
      	{ "breed": "Pug", "name": "Doug"},
      	{ "breed": "Corgi", "name": "Jenny"},
      	{ "breed": "Pomeranian", "name": "Koda"},
      	{ "breed": "Great Dane", "name": "Zeus"},
      	{ "breed": "Frenchie", "name": "Bruce"},
      	{ "breed": "Cane Corso", "name": "Sofia"},
      	{ "breed": "Pomeranian", "name": "Snowball"}
      ]'></zg-data>
      <!-- If you don't want to use all columns from dataset, user must define columns here -->
      <zg-colgroup>
        <zg-column index="breed" type="select" 
            type-select-options="Cane Corso, Corgi, Frenchie, Great Dane, Pomeranian, Pug"></zg-column>
        <zg-column index="name" filter="disabled"></zg-column>
        <zg-column index="breed" header="Combined" filter="disabled">
          <div>[[record.breed]] - [[record.name]]</div>
        </zg-column>
      </zg-colgroup>
    </zing-grid>

  </body>
</html>
.zg-body { background:#e6e6e6; }
// No JS code

Interested in this demo? Modify it to your needs in ZingSoft Studio, our testing sandbox. It's free to sign up, and you can come back and edit at any time!

Edit in Studio

Demo Gallery