experiment_id: web-retrieval-v1
fixture_id: /demos/web-component-grid-custom-nested-headers
mode: provenance
representation: html
origin_response_id: 855edc44d8417566da796af15395bd78
version: 2026-10-21
version_created_at_utc: 2026-10-21T20:42:35.565Z
version_nonce: c0bc343a6a44da639fc6a3c739ccf5bb
generated_at_utc: 2026-11-15T01:34:55.558Z
response_nonce: a477733a7c28fb59649751f64b78adc0

User Defined Nested Headers

29 of 125
You can define your own nested headers by using dot notation to delimit what path we should use in your object chain: header="Player Info.Custom Shared Header".
Result Full HTML CSS JS
Edit Download

Full Code

<!DOCTYPE html>
<html>

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

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

<body class="zg-body">
  <zing-grid caption="EPL Top Scorers" layout="row" layout-controls="disabled" viewport-stop>
    <zg-data data='[
        {
        	"playerInfo": {
            "name": "Eden Hazard",
            "club": "Chelsea",
          	"goals": 5      
        	}              
        },
        {
          "playerInfo": {
          	"name": "Aleksandar Mitrovic",
          	"club": "Fulham",
          	"goals": 5 
          }
        },
        {
        	"playerInfo": {              
          	"name": "Sergio Agüero",
          	"club": "Manchester City",
          	"goals": 4   
					}
        },
        {
        	"playerInfo": {  
          	"name": "Romelu Lukaku",
          	"club": "Manchester United",
          	"goals": 4
          }
        },
        {
        	"playerInfo": {  
          	"name": "Sadio Mané",
          	"club": "Liverpool",
          	"goals": 4   
          }
        }
      ]'></zg-data>
    <zg-colgroup>
      <zg-column index="playerInfo.goals" header="Player Info.Custom Shared Header"></zg-column>
      <zg-column index="playerInfo.name" header="Player Info.Custom Shared Header"></zg-column>
      <zg-column index="playerInfo.name" header="Name"></zg-column>
      <zg-column index="playerInfo.club"></zg-column>
    </zg-colgroup>
  </zing-grid>
  <script>
    ZingGrid.setLicense(['26ccbfec16b8be9ee98c7d57bee6e498']);
  </script>
</body>

</html>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>ZingGrid: Simple Grid</title>
    <script src="https://cdn.zinggrid.com/zinggrid.min.js"></script>
  </head>
  <body class="zg-body">
    <zing-grid 
      caption="EPL Top Scorers"
      layout="row"
      layout-controls="disabled"
      viewport-stop>
      <zg-data 
        data='[
        {
        	"playerInfo": {
            "name": "Eden Hazard",
            "club": "Chelsea",
          	"goals": 5      
        	}              
        },
        {
          "playerInfo": {
          	"name": "Aleksandar Mitrovic",
          	"club": "Fulham",
          	"goals": 5 
          }
        },
        {
        	"playerInfo": {              
          	"name": "Sergio Agüero",
          	"club": "Manchester City",
          	"goals": 4   
					}
        },
        {
        	"playerInfo": {  
          	"name": "Romelu Lukaku",
          	"club": "Manchester United",
          	"goals": 4
          }
        },
        {
        	"playerInfo": {  
          	"name": "Sadio Mané",
          	"club": "Liverpool",
          	"goals": 4   
          }
        }
      ]'></zg-data>
      <zg-colgroup>
        <zg-column index="playerInfo.goals" header="Player Info.Custom Shared Header"></zg-column>
        <zg-column index="playerInfo.name" header="Player Info.Custom Shared Header"></zg-column>
        <zg-column index="playerInfo.name" header="Name"></zg-column>
        <zg-column index="playerInfo.club"></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