CGridTreeColumn 
Defines tree column.
Note 
CGridTreeColumn component does not have the feature to open and close branch nodes, you must implement it yourself if you need it.
See also the TreeColumn document.
Vue Template Structure 
vue
<template>
  <div class="demo-grid small">
    <c-grid :data="records" :frozen-col-count="1">
      <c-grid-tree-column :field="treeField" width="200" @click="onClickRecord">
        Tree
      </c-grid-tree-column>
      <c-grid-column field="code" width="200"> Code </c-grid-column>
    </c-grid>
  </div>
</template>
<script>
const tree = [
  {
    code: "p1",
    children: [
      {
        code: "c1_1",
        children: [
          {
            code: "d1_1_1",
          },
          {
            code: "d1_1_2",
            children: [
              {
                code: "e1_1_2_1",
              },
              {
                code: "e1_1_2_2",
              },
            ],
          },
        ],
      },
      {
        code: "c1_2",
      },
    ],
  },
  {
    code: "p2",
    children: [
      {
        code: "c2_1",
      },
      {
        code: "c2_2",
      },
    ],
  },
];
// Set the parent property to the parent node so that we can keep track of the parent node.
const buffer = [...tree];
while (buffer.length) {
  const node = buffer.shift();
  for (const child of node.children || []) {
    child.parent = node;
    buffer.push(child);
  }
}
/** Gets the specified node and its ancestor nodes. */
function* ancestors(node) {
  let n = node;
  while (n) {
    yield n;
    n = n.parent;
  }
}
export default {
  data() {
    return {
      expands: { p1: true },
    };
  },
  computed: {
    records() {
      const vm = this;
      return buildRecords(tree);
      function buildRecords(nodes) {
        const records = [];
        for (const node of nodes) {
          records.push(node);
          if (vm.expands[node.code]) {
            records.push(...buildRecords(node.children));
          }
        }
        return records;
      }
    },
  },
  methods: {
    treeField(node) {
      const hasChildren = !!node.children?.length;
      const path = [...ancestors(node)].reverse().map((node) => node.code);
      return {
        caption: node.code,
        path,
        nodeType: hasChildren ? "branch" : "leaf",
      };
    },
    onClickRecord(node) {
      this.expands[node.code] = !this.expands[node.code];
    },
  },
};
</script>Slots 
default slot 
Use this slot to set the header caption
Properties 
Optional Properties 
| Name | Type | Description | Default | 
|---|---|---|---|
| field | object|string|function | Defines a column data field | undefined | 
| width | number|string | Defines a default column width | undefined | 
| min-width | number|string | Defines a column min width | undefined | 
| max-width | number|string | Defines a column max width | undefined | 
| column-style | object|string|function | Defines a column style. Same as the style property of the JS API. | undefined | 
| caption | string|function | Defines a header caption | '' | 
| disabled | boolean|function | Defines disabled. You can also control each record by specifying a function. | false | 
| colspan | number|string | Defines the layout colspan. This property can be used when defining in the layout-header and layout-body slots. | undefined | 
| filter | string|function | Defines a vue filter name | undefined | 
| header-action | object|string|function | Defines a column header action. Same as the headerAction property of the JS API. | undefined | 
| header-field | string | Defines a column header data field | undefined | 
| header-icon | object|string | Defines a header icon | undefined | 
| header-style | object|string|function | Defines a column header style. Same as the headerStyle property of the JS API | undefined | 
| header-type | object|string|function | Defines a column header type. Same as the headerStyle property of the JS API | undefined | 
| icon | object|string|function | Defines an icon. Same as the icon property of the JS API. | undefined | 
| message | object|string|function | Defines a message generation method. Same as the message property of the JS API. | undefined | 
| rowspan | number|string | Defines the layout rowspan. This property can be used when defining in the layout-header and layout-body slots. | undefined | 
| sort | boolean|string|function | Defines a sort. See "Sort by Column" for detail. | undefined | 
Events 
| Name | Description | 
|---|---|
| click | Fired when a click on cell. | 
Methods 
| Name | Return Type | Description | 
|---|---|---|
| invalidate | --- | Redraws the whole grid. |